我正在使用 Elastic.js 访问 ElasticSearch 并运行查询....我需要运行一个方面并获取结果并将此结果用于另一个查询...我能够获得第一个结果并运行使用结果进行查询,但由于执行顺序问题,无法访问第二个回调中的第一个查询词。如果我使用 JS 的 setTimeout(),我可以得到想要的结果。
那么有没有比 setTimeout 更好的选择?
for(i in res_week){
if(res_week[i].term !=null){
var sourceFilter = ejs.TermsFilter("source",res_week[i].term);
var data2 = [];
var term_temp = res_week[i].term;
var count_temp = res_week[i].count;
var typesCallback = function(typeResults){
console.log(typeResults);
var temphold = typeResults.facets.srctype_list.terms;
data2.push(temphold);
console.log(term_temp);
};
data.push({"list":data2});
var temp_r = ejs.Request()
.indices(index)
.types(type)
.facet(listfacet
.facetFilter(ejs.AndFilter([timeLimit,sourceFilter])));
console.log(temp_r);
temp_r.doSearch(typesCallback);
}
在这里,我无法在 typesCallback 函数中访问 res_week[] 的术语,它说未定义,通过使用临时变量,我在函数内部获取这些术语,但不是在第一次迭代中,而是仅从第二次迭代中获取。