我是javascript中.then概念的新手。我想知道是否可以创建一个for loop
,其中包含.then
个
request.send(myRequest)
.then(r => console.log(r, 0))
.then(r => console.log(r, 1))
.then(r => console.log(r, 2))
.then(r => console.log(r, 3))
.then(r => console.log(r, 4))
我希望动态地创建.then
链,而不是像这样的手动解决方法,这样就可以执行.then
i
次i++
是
答案 0 :(得分:0)
如果promises之间没有依赖关系,你可以使用 promise.all([promise1,promise2])。then((arrayofresult)=> {})。
或者您可以使用其他外部库bluebird。
答案 1 :(得分:0)
如果它必须是顺序的,你总是可以这样做:
async function doSomeAsyncStuff(r, i, max) {
if( i < max ) {
await soSomeOtherAsyncStuff();
return doSomeAsyncStuff(r, i+1, max )
}
}
request.send(myRequest)
.then(r => {
return doSomeAsyncStuff(r, i, 10)
})
但它总是取决于实际用例如何理想地解决问题。
答案 2 :(得分:0)
如果我没有错,我认为你正在寻找一种动态的方式来编写承诺链。这是一个简单的例子。在这里,我展示了一种方法来做这些事情。你可以根据自己的需要定制它。这是基本的。
function request(data){
return new Promise((resolve,reject) => resolve(data))
}
var arrData = [1,2,3,4]
arrData.reduce((initial,data,index)=>initial.then(r =>
{
console.log(r);return request(data)
}),Promise.resolve(0)).then(data=>console.log(data))