Javascript 当导入的函数需要一段时间才能完成时,如何从nodeJS中的require导入字符串?
我调用下面的代码,它导入了一个搜索查询函数Javascript 当导入的函数需要一段时间才能完成时,如何从nodeJS中的require导入字符串?,javascript,node.js,elasticsearch,Javascript,Node.js,elasticsearch,我调用下面的代码,它导入了一个搜索查询函数 var match_all = require('./match_all');
var match_all = require('./match_all');
var data=match_all.func();
console.log('uo yoyo');
console.log(data);
所有匹配项如下所示:
var string_of_da;
//a function which queries for all pid and syscalls
var string = function(){
var client = new elasticsearch.Client({
.....
})
//queries to ES
function getmeres(client,syscall){
client.search({
........
},function (error,response) {
.......
showdocs(d)
}
});
}
function showdocs(d){
var da = d["hits"]["hits"].map(function(i){
return i['_source'];
});
string_of_da = JSON.stringify(da,null,'\t');
}
return string_of_da;
};
module.exports.func = string;
module.exports.string = string_of_da;
现在,当我执行前面的js程序时,它会正确地进行查询,但在调用match_all.func()
并返回字符串之前,会调用console.log。所以我的输出看起来像
uo yoyo
未定义
…elasticsearch搜索日志
这里出了什么问题 因为您正在使用回调。回调工作是异步的。这就是console.log首先打印的原因。在异步中,它不会等到他得到响应。回调是函数的异步等价物。在给定任务完成时调用回调函数。节点大量使用回调。Node的所有API都以支持回调的方式编写。谢谢。我看到我必须传递一个名为callback的参数,并将数据提供给这个回调函数。谢谢