weixin_33691700 2015-04-01 10:39 采纳率: 0%
浏览 37

多个Ajax异步调用

I have list of lib name from the name I want fetch the author name. for this I made each loop on library name and make async call. I want return all the author name with library name once the call was end. While I try with Async call it return the call back before the call was successes. so I have try to return the callback in success but now the call back was return once the first request completed. I have try with sync call but it block the user interface. so what is the best method to do that. My code

function FetchLibAuthorID(LibCollection, callback) {
$.each(LibCollection, function (key, value) {
    $.ajax({
        url: value.MetadataURI + '?$select=schemaXml',
        type: "GET",
        headers: { "Accept": "application/json;odata=verbose" },
        success: function (data) {
            var listProperties = schemaXml2Json(data.d.SchemaXml);
            LibCollection[key].AuthorID = listProperties.Author;
            LibCollection[key].RootFolder = listProperties.RootFolder;
        },
        error: function (data2) {
            alert('error');
        }
    });
});
return callback(LibCollection);

}

  • 写回答

2条回答 默认 最新

  • weixin_33709219 2015-04-03 12:02
    关注
    var libCollection = [{ MetadataURI: "url1" }, { MetadataURI: "url2" }];
    
    function loadLibrary(complete) {
        if (libCollection.length === 0) {
            complete();
            return;
        }
    
        var lib = libCollection.pop();
        $.ajax({
            url: lib.MetadataURI + '?$select=schemaXml',
            type: "GET",
            headers: { "Accept": "application/json;odata=verbose" },
            complete: function (data) {
                var listProperties = schemaXml2Json(data.d.SchemaXml);
                LibCollection[key].AuthorID = listProperties.Author;
                LibCollection[key].RootFolder = listProperties.RootFolder;
    
                loadLibrary(complete);
            }
        });
    };
    
    // call the function
    
    loadLibrary(function() {
        alert("all libraries have been loaded")
    });
    
    评论

报告相同问题?