<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                >[info] ## 異步題一 ~~~ 下面的打印結果: script start async1 start async2 promise1 script end async1 end promise2 setTimeout 2.解釋代碼自上而下執行,但執行到第一個console.log 的時候開始輸出'script start' 遇到setTimeout 進入webapi 然后當還是在webapi的線程和js線程線程形成多線程同步 但是setTimeout 雖然執行完了會進入宏任務隊列中排隊,執行到async1() 函數調用 開始執行輸出'async1 start',執行到' await async2()' 開始觸發'async2'函數打印出'async2' 此時因為'await' 修飾了'async2' 函數整體可以看作 new Promise((res,rej) => { async2() res() }).then(() => { console.log('async1 end') }) } then 回調此時是微任務隊列中,此時接著看js線程,執行到Prmose 實列,輸 出'promise1',遇到then再次進入微任務隊列中,js線程中'script end' 打印,事件循環發現 js 線程已經沒有值,開始調用微任務隊列中依次進入兩個回調依次輸出 'async1 end' 'promise2',最后看宏任務隊列中執行'setTimeout' ~~~ ~~~ async function async1() { console.log('async1 start') await async2() console.log('async1 end') } async function async2() { console.log('async2') } console.log('script start') setTimeout(function () { console.log('setTimeout') }, 0) async1() new Promise(function (resolve) { console.log('promise1') resolve() }).then(function () { console.log('promise2') }) console.log('script end') ~~~ >[info] ## 案例二 ~~~ start p1 p2 timeout1 p3 p4 interval 1.解釋微任務執行完 輪到宏任務執行 ~~~ ~~~ console.log('start') let intervalId Promise.resolve() .then(() => { console.log('p1') }) .then(() => { console.log('p2') }) setTimeout(() => { Promise.resolve() .then(() => { console.log('p3') }) .then(() => { console.log('p4') }) intervalId = setInterval(() => { console.log('interval') }, 3000) console.log('timeout1') }, 0) ~~~ >[info] ## 案例三 ~~~ b f c a d ~~~ ~~~ setTimeout(() => { console.log('a'); }); Promise.resolve().then(() => { console.log('b'); }).then(() => { Promise.resolve('c').then(data => { setTimeout(() => { console.log('d') }); console.log('f'); return data; }); }).then(data => { console.log(data); }); ~~~ https://juejin.cn/book/6891929939616989188/section/6891940071243513868
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看