elasticsearch,Ajax,elasticsearch" /> elasticsearch,Ajax,elasticsearch" />

Ajax 如何在elasticsearch中同步进行多个调用?

Ajax 如何在elasticsearch中同步进行多个调用?,ajax,elasticsearch,Ajax,elasticsearch,我在“for”循环中创建对elasticsearch服务器的ajax调用。我所面临的问题是,响应的顺序不正确(即使用for循环生成客户机的顺序)。如何使呼叫和响应同步 您可以这样做: $(document).ready(function(){ function extendFuncChain(url, callback) { func_chain_list.push(function() { $.ajax({ ur

我在“for”循环中创建对elasticsearch服务器的ajax调用。我所面临的问题是,响应的顺序不正确(即使用for循环生成客户机的顺序)。如何使呼叫和响应同步

您可以这样做:

$(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(不推荐)