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