首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步阻塞函数node.js中的对象返回变量

异步阻塞函数node.js中的对象返回变量
EN

Stack Overflow用户
提问于 2016-07-16 15:19:58
回答 1查看 55关注 0票数 0

我使用一个函数访问JSON文件中的数据,然后在该文件中查询特定的键。我正在尝试返回其查找结果,但似乎在查询找到关键字之前就执行了返回函数。

在查询函数中返回变量queryresponse之后,它总是以未定义的形式返回。

代码语言:javascript
复制
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.

我该怎么做才能使这个语句异步呢?

我想说明的是,我也尝试过这个,也不起作用,仍然给出不确定的响应。

代码语言:javascript
复制
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'));

感谢您能提供的任何帮助

EN

回答 1

Stack Overflow用户

发布于 2016-07-16 15:26:03

您需要使用回调。如下所示:

代码语言:javascript
复制
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);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38408833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档