小编Sim*_*mon的帖子

ES6 Dyanmic Promise链接来自阵列

脚本

我有一个需要下载的URL数组,但每个URL也必须提供一个必须从服务器请求的唯一事务ID,并且只在请求成功时递增.

问题

当我循环遍历数组时,我需要等待事务ID的请求和文件的请求在开始循环的下一次迭代之前完成,但文件的数量不固定,因此需要动态构建链承诺.

伪代码

下面是一些伪代码,getFiles()是问题,因为所有请求都获得相同的事务ID,因为它们不等待先前的请求完成.

function getTransationId(){
    return new Promise((resolve,reject)=> {
        let id = getNextTransactionId();
        if(id!=error){
            resolve(id);
        }else{
            reject(error);
        }
    })
}

function getFile(url, transactionId){
    return new Promise((resolve,reject)=>{
        http.request(url+transactionId, function(err,response){
            if(err){
                reject(err);
            }else{
                resolve(response);
            }
        });
    });
}

function getFilesFromArray(urlArray){
    for(let url of urlArray){
        getTransactionId().then(resolve=>getFile(url,resolve),reject=>console.error(reject));
    }
}
Run Code Online (Sandbox Code Playgroud)

如何动态链接链承诺?

回答

这是Ovidiu答案的JSFiddle

javascript node.js promise ecmascript-6 es6-promise

1
推荐指数
1
解决办法
609
查看次数

标签 统计

ecmascript-6 ×1

es6-promise ×1

javascript ×1

node.js ×1

promise ×1