摘要:一道有意思的題以下我的學習分析心路歷程,以及我自己又多加了幾道菜希望對你有幫助先上菜分析第一道菜第一次看到我做錯了,答案是我的疑惑就是為什么在和之間,很奇怪。說明什么呢我對的內部實現還不了解,那只能去看源碼了。
一道有意思的題
以下我的學習分析心路歷程,以及我自己又多加了幾道菜;希望對你有幫助
先上菜new Promise((resolve, reject) => { console.log("promise1"); resolve(); }).then(() => { console.log("then11"); new Promise((resolve, reject) => { console.log("promise2"); resolve(); }).then(() => { console.log("then21"); }).then(() => { console.log("then23"); }); }).then(() => { console.log("then12"); });分析第一道菜
第一次看到我做錯了,答案是
promise1 then11 promise2 then21 then12 then23
我的疑惑就是then12為什么在then21和then23之間,很奇怪。說明什么呢?我對Promise的內部實現還不了解,那只能去看源碼了。在學習過程中,自己也嘗試改變了幾處,也貼上來吧,大家看看
看完后我的理解先分析下面代碼
new Promise((resolve, reject) => { console.log("promise1"); resolve(); })
第一步console.log("promise1"),這是第一個promise實例
第二步resolve(),他是一個異步,放入異步隊列中,取名異步1
第三步this.status 狀態是pending
接著執行下面代碼
.then(() => { console.log("then11"); new Promise((resolve, reject) => { console.log("promise2"); resolve(); }).then(() => { console.log("then21"); }).then(() => { console.log("then23"); }); })
因為狀態是pending,將then方法回調函數加入執行隊列(一個數組)等待執行(專用來放then方法的數組),該then方法取名方法1
重點接著執行什么?并不是執行.then(() => {console.log(then12)}),要記住的是then的參數方法執行時機是當前(屬于自己的)promise狀態改變才會執行,誰改變resolve或者rejectd的執行,那么這里then的promise哪里來,就是上面的方法1中來看他的return值
所以開始執行異步1(我都有取名的,看
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/109604.html
摘要:一篇文章和一道面試題最近,有篇名為張圖幫你一步步看清和的執行順序的文章引起了我的關注。作者用一道年今日頭條的前端面試題為引子,分步講解了最終結果的執行原因。從字面意思理解,讓我們等等。當前的最新版本,在這里的執行順序上,的確存在有問題。 一篇文章和一道面試題 最近,有篇名為 《8張圖幫你一步步看清 async/await 和 promise 的執行順序》 的文章引起了我的關注。 作者用...
摘要:同步異步回調傻傻分不清楚。分割線上面主要講了同步和回調執行順序的問題,接著我就舉一個包含同步異步回調的例子。同步優先回調內部有個,第二個是一個回調回調墊底。異步也,輪到回調的孩子們回調,出來執行了。 同步、異步、回調?傻傻分不清楚。 大家注意了,教大家一道口訣: 同步優先、異步靠邊、回調墊底(讀起來不順) 用公式表達就是: 同步 => 異步 => 回調 這口訣有什么用呢?用來對付面試的...
摘要:同步異步回調傻傻分不清楚。分割線上面主要講了同步和回調執行順序的問題,接著我就舉一個包含同步異步回調的例子。同步優先回調內部有個,第二個是一個回調回調墊底。異步也,輪到回調的孩子們回調,出來執行了。 同步、異步、回調?傻傻分不清楚。 大家注意了,教大家一道口訣: 同步優先、異步靠邊、回調墊底(讀起來不順) 用公式表達就是: 同步 => 異步 => 回調 這口訣有什么用呢?用來對付面試的...
摘要:主線程從任務隊列中讀取事件,這個過程是循環不斷的,所以整個的這種運行機制又稱為事件循環。上面也提到,在到達指定時間時,定時器就會將相應回調函數插入任務隊列尾部。這就是定時器功能。關于定時器的重要補充定時器包括與兩個方法。 一、引子 本文介紹JavaScript運行機制,這一部分比較抽象,我們先從一道面試題入手: console.log(1); setTimeout(function()...
閱讀 2311·2021-10-11 10:59
閱讀 2603·2021-10-11 10:58
閱讀 3304·2021-09-08 09:35
閱讀 3784·2021-09-02 15:21
閱讀 1455·2019-08-30 15:53
閱讀 2608·2019-08-29 14:16
閱讀 2070·2019-08-26 14:00
閱讀 2942·2019-08-26 13:52