2015-11-07 130 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