2015-11-07 41 views
0

我想同時發送一個動態數量的ajax請求,並且希望對它們全部進行回調(即回調到最後一個回調),但我使用的是node.js.我發現了一個jQuery版本來解決它在這裏 Pass in an array of Deferreds to $.when() 但我怎麼能在node.js做到這一點?

由於

回答

0

Promise.all需要承諾的陣列,並返回陣列的無極。 node-fetch模塊可以用來異步發出HTTP請求(AJAX只是指瀏覽器執行的請求。)

Bluebird是一個nodejs Promise的polyfill。

喜歡的東西

var fetch = require('node-fetch'), 
    Promise = require('bluebird'); 

function fetchUrls(URLs) { 
    return Promise.all(URLs.map(function (URL) { 
     return fetch(URL).then(function (response) { 
      return response.json(); 
     }); 
    })); 
} 

fetchUrls(['url1','url2']).then(function (data) { 
    // do stuff with the result data here 
}); 
+0

我不明白的地方我可以加我的代碼執行的最後一個回調函數返回時。 – omega

+0

添加一個「然後」回覆到承諾,hangon –

+0

相應地編輯 –

0

的NodeJS不使用AJAX,你有HTTP API或request。您試圖做的事情可以通過Promises或async庫解決。解決問題的

一種方法是這樣(未經測試):

var async = require("async"); 
    var request = require("request"); 
    async.map(["https://target.com/a","https://target.com/b"], request, function (err, data) { 
     console.log(data); 
    }); 
+0

這是如何讓我回到最後一次返回ajax? – omega