Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用额外数据扩展承诺_Javascript_Node.js_Promise_Q - Fatal编程技术网

Javascript 用额外数据扩展承诺

Javascript 用额外数据扩展承诺,javascript,node.js,promise,q,Javascript,Node.js,Promise,Q,我正在使用kriskowal/qpromise库来处理http请求,但为了简化这个案例,让我们假设动态创建了一个promises数组,并将其推送到promises数组: var promises = [], ids = ['foo', 'bar', 'buz']; ids.forEach(function(id){ var promise = Q.fcall(function () { return 'greetings with ' + id; }); prom

我正在使用
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,我无法使用额外数据对其进行扩展)。

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

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

Promise.all
,那么您可以使用
results
中每个元素的索引来查找id(在您的示例中很简单)?@joews…aa问题就解决了。谢谢。现在有了正确的链接-我的评论提到了ES6
Promise.all
,但是
Q.all
做出了同样的保证。