1. 程式人生 > >JS實現併發Ajax請求

JS實現併發Ajax請求

問題:有A、B、C三個請求,C請求需要A、B請求獲取到的資料,如何解決

此前碰到這類問題都是直接改為序列解決,先獲取到A然後A的回撥呼叫B,B再呼叫C。最近發現瞭解決方法:

  1. JQ:
    jq1.5版本之後重寫了AJAX,並且新增了一個新功能:deferred物件

    $.when(A(), B())
    	.done(function(){console.log('done')})
    	.fail(function(){console.log('fail')})
    
    
  2. Promise物件:

    const promises = [2, 3, 5, 7, 11, 13].map
    (function (id) { return getJSON('/post/' + id + ".json"); }); Promise.all(promises).then(function (posts) { // ... }).catch(function(reason){ // ... });

promise物件的all方法可以等待所有介面皆resolve之後呼叫回撥函式