异步阻塞从函数节点.js中的对象返回变量
Asynchronous blocking return variable from object in function node.js
我正在使用一个函数,该函数从JSON文件访问数据,然后查询该文件以获取特定键。我试图返回其结果,但似乎在查询找到键之前正在执行返回函数。
查询后,我在查询函数中返回变量查询响应,它总是以未定义的方式返回。
var jsonQuery = require('json-query');
var fs = require('fs');
function querydb(netdomain){
fs.readFile('./querykeys.json', 'utf8', function (err, data) {
if (err){console.log('error');}
var obj = JSON.parse(data);
var queryobject = netdomain.toString();
var queryresponse = jsonQuery('servers[netshare=' + queryobject + '].netdomain', {
data: obj
});
return queryresponse;
});
}
console.log(querydb('timeline'));
// returns undefined.
如何使此语句异步?
我想指出,我也尝试过这个,也没有功能,仍然给出未定义的响应。
var jsonQuery = require('json-query');
var fs = require('fs');
function querydb(netdomain){
fs.readFile('./querykeys.json', 'utf8', function (err, data) {
if (err){console.log('error');}
var obj = JSON.parse(data);
var queryobject = netdomain.toString();
return jsonQuery('servers[netshare=' + queryobject + '].netdomain', {
data: obj
});
});
}
console.log(querydb('timeline'));
感谢您提供的任何帮助
您需要使用回调。像这样:
var jsonQuery = require('json-query');
var fs = require('fs');
function querydb(netdomain, callback) {
fs.readFile('./querykeys.json', 'utf8', function (err, data) {
if (err) {
callback(err);
return;
}
var obj = JSON.parse(data);
var queryobject = netdomain.toString();
callback(null, jsonQuery('servers[netshare=' + queryobject + '].netdomain', {
data: obj
}));
});
}
querydb('timeline', function (err, result) {
if (err) {
console.log('ERROR: ' + err);
return;
}
console.log(result);
});
相关文章:
- Javascript:firstChild对象返回undefined
- Javascript对象返回垃圾值
- 从js中的对象返回一个值
- 从Javascript类对象返回函数
- 从具有最高值的对象返回属性
- 为什么我的Date对象返回当前日期
- NodeJS fs.readdr-将回调内部作为对象返回
- Leadfoot会话对象返回promise
- 如何从对象返回可读字符串
- 日期对象和ISO日期对象返回不同的日期
- 使用JavaScript's FormData对象返回整个html
- 节点.js请求对象 - 返回响应正文以供进一步操作
- 使用 Restangular 使用 RESTful API - RESTful API 将数组作为顶级对象返回是否安全
- 带有方法的 Javascript 对象返回“没有方法'我的方法名称'”错误
- 从 Date() 对象返回 dd-mm-yyyyy
- JSON 中的日期对象返回的数据被视为字符串
- Javascript - 如何获取字符串,打印单词,字符,空格,平均单词长度的#并作为对象返回
- 如何从新对象返回值,同时保留其方法
- 如何从对象返回某些键
- 从 Javascript 中的对象返回值