Promise 入門(推薦) 原

課程地址:https://www.imooc.com/learn/949

 一、課程介紹及異步問題

將來的狀態

錯誤1:入棧出棧,前後兩個函數不在同一個棧。異步回調的過程中沒有辦法是由try...catch

錯誤2:前面聲明的變量不僅能被外面函數使用,也能被別的函數使用修改,違背關注點統一的原則

總結:異步回調函數會在一個新的棧裏運行,所以在這個棧是沒辦法獲取之前棧的信息的,之前拋出的信息的,異步回調的時候沒有辦法像以前那樣try...catch處理錯誤;沒有辦法判斷這些文件什麼時候處理完成,所以在高級作用域鏈-外層聲明很多變量,內層去使用,導致被其他修改

二、Promise 入門

如果只有一個異步回調使用promise是沒有意義的,只有在多個連續的異步回調裏,promise纔有意義

start——1秒之後輸出the promise fulfilled——2秒之後刷出hello,world

在任何地方生成一個promise隊列,可以把它作爲變量傳遞到其他地方

如果操作是一個很明顯的隊列(先進先出),可以在後面追敘then

不管前面狀態是不是完成了,都會按照順序完成。如果完成了,後面返回的then也會得到前面promise返回的值

這三個是同時輸出

then沒有等到裏面的promise返回的實例,直接執行了下一個then,但是這個then裏面立即執行裏的promise裏的定時器又會在2s之後執行

在promise實例裏如果不直接返回promise實例,他就會直接執行下一個,即時裏面返回了false,也不影響下一步,因爲false會直接傳遞到下面

沒有明確返回值,相當於返回undefind。

整個進程仍然是等到完成纔會執行

三、小測試

展開裏面的then。執行效果一樣,看起來更清晰

假設dosomething和dosomethingelse都返回promise實例

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章