Javascript 如何保证异步完成所有请求,并将请求url映射到Node.js 10.x.x中的承诺响应?

Javascript 如何保证异步完成所有请求,并将请求url映射到Node.js 10.x.x中的承诺响应?,javascript,node.js,promise,fetch,Javascript,Node.js,Promise,Fetch,我有几个GET请求需要发出,由于超时限制,它们必须异步运行,我需要保证所有请求都能运行。另外,当结果返回时,我需要知道它引用了哪个URL 第一部分我已经设法解决了,但我无法映射到正确的url。代码如下: urls = ['https://example-a.com', 'https://example-b.com', 'https://example-c.com'] Promise.all(promises.map(p => fetch(p.url))).then(function(re

我有几个GET请求需要发出,由于超时限制,它们必须异步运行,我需要保证所有请求都能运行。另外,当结果返回时,我需要知道它引用了哪个URL

第一部分我已经设法解决了,但我无法映射到正确的url。代码如下:

urls = ['https://example-a.com', 'https://example-b.com', 'https://example-c.com']

Promise.all(promises.map(p => fetch(p.url))).then(function(res){
    var blobPromises = [];

    /* HERE I WOULD LIKE TO KNOW WHICH URL'S REQUEST WAS RETURNED */
    
    for (var j = 0; j < urls.length - 1; j++) {
        blobPromises.push(res[j].text());
    }
    return Promise.all(blobPromises);
}).then(function(body){
    var output = {rawData: body)};
    callback(null, output);
}).catch(callback);
url=[]https://example-a.com', 'https://example-b.com', 'https://example-c.com']
Promise.all(promises.map(p=>fetch(p.url))。然后(函数(res){
var blobPromises=[];
/*这里我想知道返回了哪个URL的请求*/
对于(var j=0;j

如何进行此映射?

您似乎错误地假设了
承诺的当时处理程序。每个承诺都会调用一次所有
。相反,它只调用一次(如果不是所有承诺都解析,则永远不会调用),使用一个数组包含每个承诺的解析(与承诺的顺序相同)

对于您的示例(稍作修改,因为您的代码缺少一些变量和不正确的语句):

(旁注),异步流依赖(例如)将允许您像对待普通数组一样对待数组的承诺或承诺数组(或承诺数组的承诺…)

let responses = new Stream()
  .writePromise(...promises)
  .map(response => response.text());

非常感谢你!我还不明白,带有已解决承诺的数组将保证与承诺的顺序相同。
urls = ['https://example-a.com', 'https://example-b.com', 'https://example-c.com']

let promises = urls.map(url => fetch(url));

let responses = Promise.all(promises).then(responses => 
    responses.map(respnose => response.text()));
let responses = new Stream()
  .writePromise(...promises)
  .map(response => response.text());