Javascript Node.js中的承诺和数组

Javascript Node.js中的承诺和数组,javascript,arrays,node.js,foreach,promise,Javascript,Arrays,Node.js,Foreach,Promise,我正在使用Bluebird并请求npm包: var Promise = require('bluebird'); var request = Promise.promisify(require('request')); Promise.promisifyAll(request); 我有一个函数,该函数指向REST端点并返回一些数据: var getData = function() { options.url = 'http://my/endpoint'; options.me

我正在使用Bluebird并请求npm包:

var Promise = require('bluebird');
var request = Promise.promisify(require('request'));
Promise.promisifyAll(request);
我有一个函数,该函数指向REST端点并返回一些数据:

var getData = function() {
    options.url = 'http://my/endpoint';
    options.method = 'GET'; //etc etc...
    return request(options);
};

getData().then(function(response) {
  console.log(response); //-> this returns an array
});
response
是REST端点返回的数组。问题是,现在我想对数组中的每一项进行第二次请求,例如:

var getIndividualData = function(data) {
  data.forEach(function(d) {
    options.url = 'http://my/endpoint/d'; //make individual requests for each item
    return request(options);
  });
};
以上当然不起作用,我理解原因。然而,我不明白的是,我如何才能使这项工作。理想情况下,我想要的是一条链,如:

getData().then(function(response) {
  return getIndividualData(response);
}).then(function(moreResponse) {
  console.log(moreResponse); // the result of the individual calls produced by getIndividualData();
});
您可以使用等待一系列承诺完成

getData()
  .then(getIndividualData)
  .then(function(moreResponse) {
    // the result of the individual calls produced by getIndividualData();
    console.log(moreResponse);
   });

function getIndividualData(list) {
  var tasks = list.map(function(item) {
    options.url = // etc.
    return request(options);
  });

  return Promise.all(tasks);
}