第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何等待 2 個承諾完成,再運行另一個?

我如何等待 2 個承諾完成,再運行另一個?

回首憶惘然 2023-04-01 15:33:28
我正在嘗試通過以下方式實現(xiàn)兩個承諾:Promise.all([...])但他們都有自己的.then:Promise.all([promise1().then(...), promise2().then(...)]).then我希望在 Promise.all 上運行另一個,同時也在等待兩者.then返回(如果有任何意義的話)。這是一個顯示我的意思的小提琴。
查看完整描述

2 回答

?
慕標5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

如果你跑


function get1() {

  return new Promise((r)=>setTimeout(() => r(),3000))

}


function rejection() {/*Handle rejection*/}


function doAll(...ps) {

    return Promise.all(ps.map(rejection))

}


(async () => {

  var p1 = get1().then(()=>console.log("1"));

  var p2 = get1().then(()=>console.log("2"));

    Promise.all([p1, p2]).then(()=>{

    console.log("3")

  })

})()

那么結(jié)果是正確的


1


2


3


If you run


function get1() {

  return new Promise((r)=>setTimeout(() => r(),3000))

}


function rejection() {/*Handle rejection*/}


function doAll(...ps) {

    return Promise.all(ps)

}


(async () => {

  var p1 = get1().then(()=>console.log("1"));

  var p2 = get1().then(()=>console.log("2"));

    doAll(p1, p2).then(()=>{

    console.log("3")

  })

})()

然后你又得到正確的


1


2


3


結(jié)果,問題出在ps.map(rejection). 讓我們來看看:


function get1() {

  return new Promise((r)=>setTimeout(() => r(),3000))

}


function rejection() {/*Handle rejection*/}


function doAll(...ps) {

    console.log(ps);

  console.log(ps.map(rejection));

    return Promise.all(ps.map(rejection));

}


(async () => {

  var p1 = get1().then(()=>console.log("1"));

  var p2 = get1().then(()=>console.log("2"));

    doAll(p1, p2).then(()=>{

    console.log("3")

  })

})()

輸出

http://img1.sycdn.imooc.com//6427de70000175ba02140094.jpg

兩個元素的數(shù)組,兩者都是undefined微不足道的評估。因為ps.map(rejection)是一個箭頭函數(shù),它命名它的參數(shù)為 rejection 并且不返回任何東西。



查看完整回答
反對 回復(fù) 2023-04-01
?
胡說叔叔

TA貢獻1804條經(jīng)驗 獲得超8個贊

如果你想在 javascript 中使用異步操作,你可以使用 3 種方法。

  1. 打回來

  2. 承諾

  3. 異步/等待

為了實現(xiàn)您想要的確切內(nèi)容,最好和優(yōu)化的方法是使用 async/await 方法。

你可以這樣做:

async function getAllData(){


? ? ? const p1 = await promise1;

? ? ? const p2 = await promise2;

? ? ? ?

? ? ? }

現(xiàn)在 getAllData 返回 Promise,您可以使用 .then() 獲取結(jié)果并使用 .catch() 獲取錯誤。


查看完整回答
反對 回復(fù) 2023-04-01
  • 2 回答
  • 0 關(guān)注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號