Javascript 如何解决地图链中的承诺功能?
我希望下面代码中的所有slowad()都能并行执行,但在它们全部解决之前,我不想执行下一个.map()步骤。怎么做Javascript 如何解决地图链中的承诺功能?,javascript,promise,chaining,Javascript,Promise,Chaining,我希望下面代码中的所有slowad()都能并行执行,但在它们全部解决之前,我不想执行下一个.map()步骤。怎么做 async function slowAdd(a) { return new Promise( (resolve,reject) => setTimeout(() => resolve(a+5), 1000) ) } async function calcArray(list) { return list .map( a => a+1 )
async function slowAdd(a) {
return new Promise( (resolve,reject) => setTimeout(() => resolve(a+5), 1000) )
}
async function calcArray(list) {
return list
.map( a => a+1 )
.map( a => slowAdd(a) )
.map( a => a+1 )
}
async function main() {
const list = [1, 2, 3, 4, 5]
const newList = await calcArray(list)
console.log(newList)
}
main()
.catch(err => {
console.error(err);
})
.then(() => process.exit());
将它放在一个
承诺中。全部,然后您需要在中再添加一个.map
。然后执行后续操作:
异步函数slowad(a){
返回新承诺((解析,拒绝)=>setTimeout(()=>resolve(a+5),1000))
}
异步函数calcArray(列表){
回报你的承诺(
列表
.map(a=>a+1)
.map(a=>slowad(a))
)
.then(addedResults=>addedResults.map(a=>a+1));
}
异步函数main(){
常量列表=[1,2,3,4,5]
const newList=wait calcArray(列表)
console.log(newList)
}
main()
异步函数slowad(a){
返回新承诺((解析,拒绝)=>setTimeout(()=>resolve(a+5),1000))
}
异步函数calcArray(列表){
回报你的承诺(
列表
.map(a=>a+1)
.map(a=>slowad(a))
)
.then(addedResults=>addedResults.map(a=>a+1));
}
异步函数main(){
常量列表=[1,2,3,4,5]
const newList=wait calcArray(列表)
console.log(newList)
}
main()