用额外数据扩展承诺



我使用kriskowal/q promise库来处理http请求,但为了简化情况,我们假设我有一个动态创建并推送到promises数组的promise数组:

var promises = [],
    ids = ['foo', 'bar', 'buz'];
ids.forEach(function(id){
  var promise = Q.fcall(function () {
    return 'greetings with ' + id;
  });
  promises.push(promise);
});
// and handle all of them together:
Q.all(promises).then(function (results) {
  console.log(results);
});
// gives:
[ 'greetings with foo',
  'greetings with bar',
  'greetings with buz' ]

问题是,是否有可能以某种方式将id分配给承诺,以便在稍后的all执行中获得它?

让我们假设我们不能修改返回的值(它来自API,我不能用额外的数据扩展它)。

Q.all保证结果顺序,因此您可以使用results中每个元素的索引来查找id。在您的示例中:

Q.all(promises).then(function (results) {
  results.forEach(function(results, i) {
    var id = ids[i];
  })
});

相关内容

  • 没有找到相关文章

最新更新