我正在调用以下代码来导入搜索查询函数
var match_all = require('./match_all');
var data=match_all.func();
console.log('uo yoyo');
console.log(data);
Match_all如下:
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。所以我的输出看起来像
悠悠悠
未定义
...elasticsearch 搜索日志...
这里出了什么问题?
最佳答案
因为您正在使用回调。回调工作异步。这就是为什么 console.log 首先打印。异步它不会等到他得到响应。回调是函数的异步等效项。完成给定任务时调用回调函数。 Node 大量使用回调。 Node 的所有 API 都是以支持回调的方式编写的。
关于javascript - 当导入的函数需要时间才能完成时,如何从nodeJS中的require导入字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44440893/