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

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

承諾很古怪

承諾很古怪

不負(fù)相思意 2021-05-07 14:15:21
我正在做一些帶有promise的測試,并且編寫的代碼與我期望的完全不一樣:function function1() {  return new Promise((resolve, reject) => {    let i = 5000000000;    while (i > 0) {      i--;    }    resolve("print function1!!!");  });}function function2() {  console.log("print function2!!!");}function function3() {  function1().then(data => console.log(data));  function2();}function3();該代碼的執(zhí)行等待function1中循環(huán)的完成,然后輸出:打印功能2 !?。〈蛴」δ? ?。。∥移谕a會打印“ print function2 !!!”。然后等待循環(huán)完成,然后打印“ print function1 !!!”。為什么Promise中的循環(huán)會阻止代碼的執(zhí)行?
查看完整描述

2 回答

?
蝴蝶刀刀

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

為什么Promise中的循環(huán)會阻止代碼的執(zhí)行?

這就是JavaScript執(zhí)行模型(在Browsers和Node中)。您的代碼永遠(yuǎn)不會被搶占,代碼始終從頭到尾運行,并且只能為平臺“注冊”代碼以便以后運行。

promise構(gòu)造函數(shù)同步運行。承諾不會在您的代碼中引入線程,它們只會將正在then回調(diào)中的運行代碼推遲到“所有同步代碼之后”,但推遲到所有平臺代碼之前。

承諾只是將來值的句柄-它們不會使您的代碼在另一個線程上執(zhí)行。如果您需要在另一個線程上運行代碼,則需要worker_threads在瀏覽器中使用(在Node.js中)或Web Worker。


查看完整回答
反對 回復(fù) 2021-05-13
?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊

問題是您的諾言不包含任何異步代碼。如果不想等待在function1的promise中執(zhí)行的代碼,則需要在setTimeout中編寫它。


function function1() {

  return new Promise((resolve, reject) => {

    setTimeout(() => {

      let i = 5000000000;

      while (i > 0) {

        i--;

      }

      resolve("print function1!!!");

    }, 0);

  });

}


function function2() {

  console.log("print function2!!!");

}


function function3() {

  function1().then(data => console.log(data));

  function2();

}


function3();


查看完整回答
反對 回復(fù) 2021-05-13
  • 2 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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