我使用Elastic.js來訪問ElasticSearch並運行查詢....我需要運行一個方面並得到結果並使用此結果進行另一個查詢...我能夠獲取第一個結果並使用結果運行查詢,但由於執行順序的問題,無法訪問第二個回調中的第一個查詢詞。如果我使用JS的setTimeout()即可獲得所需的結果。值回調函數內部undefined
那麼有沒有更好的選擇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 []的條款和它說不確定,通過使用臨時變量i得到函數內部而不是在第一次迭代中那些術語,而是來自僅第二次迭代。
你能分享你的代碼嗎? –
@ArunPJohny代碼添加 – Sreelal