Ajax 如何在elasticsearch中同步进行多个调用?
我在“for”循环中创建对elasticsearch服务器的ajax调用。我所面临的问题是,响应的顺序不正确(即使用for循环生成客户机的顺序)。如何使呼叫和响应同步 您可以这样做:Ajax 如何在elasticsearch中同步进行多个调用?,ajax,elasticsearch,Ajax,elasticsearch,我在“for”循环中创建对elasticsearch服务器的ajax调用。我所面临的问题是,响应的顺序不正确(即使用for循环生成客户机的顺序)。如何使呼叫和响应同步 您可以这样做: $(document).ready(function(){ function extendFuncChain(url, callback) { func_chain_list.push(function() { $.ajax({ ur
$(document).ready(function(){
function extendFuncChain(url, callback) {
func_chain_list.push(function() {
$.ajax({
url : url,
type: 'GET',
contentType:"application/json"
}).done(function(data) {
console.debug(data);
callback();
});
});
}
var func_chain_list = [function() {}];
for(var i=1; i<=4; i++) {
var url = "http://localhost:9200/test_index/doc/" + i;
var callback = func_chain_list.pop();
extendFuncChain(url, callback);
}
func_chain_list.pop()();
});
DELETE /test_index
PUT /test_index
POST /test_index/doc/_bulk
{"index":{"_id":1}}
{"name": "doc1"}
{"index":{"_id":2}}
{"name": "doc2"}
{"index":{"_id":3}}
{"name": "doc3"}
{"index":{"_id":4}}
{"name": "doc4"}
然后,当我将javascript放入网页并加载它时,我在控制台中得到了这个输出(我扩展了最后一个输出):
希望您能看到如何将其推广到您需要的地方。调用
extendFuncChain
是很重要的,因为闭包在JS中的工作方式,如果去掉它,它就不起作用了。Ajax中的A代表异步
;如果你不想让你的电话变成这样,你可以使用另一种技术。。但是,jQuery支持同步Ajax(不推荐)