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

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我如何等待 2 個(gè)承諾完成,再運(yùn)行另一個(gè)?

我如何等待 2 個(gè)承諾完成,再運(yùn)行另一個(gè)?

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

2 回答

?
慕標(biāo)5832272

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果你跑


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

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



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

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超8個(gè)贊

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

  1. 打回來

  2. 承諾

  3. 異步/等待

為了實(shí)現(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() 獲取錯(cuò)誤。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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