0
我正在使用从JSON文件访问数据,然后查询该文件以查找特定键的函数。我试图返回它的发现,但似乎在查询找到密钥之前正在执行返回函数。从函数node.js中的对象异步阻塞返回变量
查询后,我返回查询函数中的变量queryresponse,它总是结束回来未定义。
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'));
感谢您的帮助,您可以提供
我想你必须返回jsonQuery()。值 –
你的函数已经是异步的。您需要研究同步和异步之间的差异。你所要求的是一个同步结果,你不能从异步函数中获得。阅读所有选项的重复问题。您不能直接从异步操作返回值。您必须使用回调,承诺或其他类似技术,以便在价值准备就绪后可以通知您。 – jfriend00