Synchronous calls with jquery
我可以使用jQuery AJAX API并进行同步调用吗?
就像奥巴马会说:是的你可以!
jQuery .ajax()
设置
1 | async = false |
在.ajax()处理程序中将完成这一操作。
虽然jQuery可以通过设置synch:false属性来进行同步AJAX调用,但这会导致浏览器挂起直到AJAX完成。 使用像Frame.js这样的流控制库,您可以在不占用浏览器的情况下进行同步调用:
1 2 3 4 5 6 7 8 9 10 11 12 | $.each(ajaxObjects, function(i, ajaxCall){ Frame(function(next)){ // declare the callback next here ajaxCall.complete = function(data){ // do something with the data next(); // go to the next ajax call } $.ajax(ajaxCall); }); } Frame.init(); |
这一系列的AJAX调用将按顺序进行,每个等待前一个完成,而不会使浏览器挂起。 还有一个额外的好处,即数据以可预测的顺序从ajax调用返回,而不是以随机顺序返回的异步调用。