一、課程介紹及異步問題
將來的狀態
錯誤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實例