通过额外数据扩展承诺

时间:2015-10-30 11:31:20

标签: javascript node.js promise q

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

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,我不能用额外的数据扩展它)。

1 个答案:

答案 0 :(得分:1)

PixelBuffer guarantees result order,因此您可以使用Q.all中每个元素的索引来查找ID。在您的示例中:

results