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

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

等待多個(gè)并行操作

等待多個(gè)并行操作

DIEA 2019-07-26 15:14:08
等待多個(gè)并行操作如何更改以下代碼,以便觸發(fā)兩個(gè)異步操作并使其有機(jī)會(huì)并發(fā)運(yùn)行?const value1 = await getValue1Async();const value2 = await getValue2Async();// use both values我需要這樣做嗎?const p1 = getValue1Async();const p2 = getValue2Async();const value1 = await p1;const value2 = await p2;// use both values
查看完整描述

3 回答

?
泛舟湖上清波郎朗

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


我認(rèn)為這應(yīng)該有效:

 const [value1, value2] = await Promise.all([getValue1Async(),getValue2Async()]);

下面是一個(gè)更詳細(xì)的示例,以便于理解:

const promise1 = async() => {
  return 3;}const promise2 = async() => {
  return 42;}const promise3 = async() => {
  return 500;
  // emulate an error
  // throw "something went wrong...";}const f1 = async() => {

  try {
    // returns an array of values
    const results = await Promise.all([promise1(), promise2(), promise3()]);
    console.log(results);
    console.log(results[0]);
    console.log(results[1]);
    console.log(results[2]);

    // assigns values to individual variables through 'array destructuring'
    const [value1, value2, value3] = await Promise.all([promise1(), promise2(), promise3()]);

    console.log(value1);
    console.log(value2);
    console.log(value3);

  } catch (err) {
    console.log("there was an error: " + err);
  }}f1();




查看完整回答
反對(duì) 回復(fù) 2019-07-27
?
慕仙森

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

使用.catch()和Promise.all()

確保正確處理拒絕,并且可以安全地使用Promises.all()而不面臨未處理的拒絕。(編輯:每次討論澄清:不是錯(cuò)誤unhandled rejection但是簡(jiǎn)單地說(shuō),拒絕是不被代碼處理的。Promise.all()會(huì)拋出第一個(gè)承諾,拒絕和意志視而不見(jiàn)其他的)。

在下面的示例中,一個(gè)[錯(cuò)誤,結(jié)果],.]數(shù)組返回以便于處理結(jié)果和/或錯(cuò)誤。

let myTimeout = (ms, is_ok) =>
  new Promise((resolve, reject) => 
    setTimeout(_=> is_ok ? 
                   resolve(`ok in ${ms}`) :
                   reject(`error in ${ms}`),
               ms));let handleRejection = promise => promise  .then((...r) => [null, ...r])
  .catch(e => [e]); (async _=> {
  let res = await Promise.all([
    myTimeout(100, true),
    myTimeout(200, false),
    myTimeout(300, true),
    myTimeout(400, false)
  ].map(handleRejection));
  console.log(res);})();

但是,您可以從CATCH()中拋出,以停止等待所有的結(jié)果(并丟棄其余的結(jié)果)-您可以每次嘗試/捕獲塊只執(zhí)行一次,因此需要維護(hù)和檢查旗標(biāo)SADS_SOWN,以確保不會(huì)發(fā)生未處理的錯(cuò)誤。

let myTimeout = (ms, is_ok) =>
  new Promise((resolve, reject) =>
    setTimeout(_=> is_ok ?
                   resolve(`ok in ${ms}`) :
                   reject(`error in ${ms}`),
               ms));let has_thrown = false;let handleRejection = promise => promise  .then((...r) => [null, ...r])
  .catch(e => {
    if (has_thrown) {
      console.log('not throwing', e);
    } else {
      has_thrown = 1;
      throw e;
    }
  });(async _=> {
  try {
    let res = await Promise.all([
      myTimeout(100, true),
      myTimeout(200, false),
      myTimeout(300, true),
      myTimeout(400, false)
    ].map(handleRejection));
    console.log(res);
  } catch(e) {
    console.log(e);
  }
  console.log('we are done');})();



查看完整回答
反對(duì) 回復(fù) 2019-07-27
  • 3 回答
  • 0 關(guān)注
  • 436 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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