1.Promise的漢譯是諾言
我突然明白了promise的意義,就是一個方法、一個js乃至一個頁面的后續(xù)js代碼的執(zhí)行,都依賴于一個異步返回的數(shù)據(jù),那么接下來所有的js代碼都可以放在promise的then里面,鏈?zhǔn)秸{(diào)用,清晰了點(diǎn)吧~。其實await也可以實現(xiàn)這樣的方式,但是應(yīng)該promise更好一點(diǎn)。
2.怎么用Promise
? ? 因為一直被各種插件框架封裝的ajax混淆,所以一直不理解promise,因為他們都有自己實現(xiàn)promise的方法,拋去ajax的思維,我們可以使用setTimeout來做實驗
? ? promise構(gòu)造函數(shù),resolve和reject是早就封裝在構(gòu)造函數(shù)里面的方法。new的時候?qū)懮暇托辛恕?/p>

? ? 上面的demo中,test函數(shù)會返回一個promise對象,這個對象啊,接收一個函數(shù)作為參數(shù),作為參數(shù)的函數(shù)還接受兩個參數(shù),這個兩個參數(shù)是兩個方法,resolve方法可以把promise的狀態(tài)從pedding改變成resolved,reject方法可以把promise的狀態(tài)從pedding改變成rejected。promise的只能改變一次,一旦變成resolved/rejected。將不會在改變。
????下面的鏈?zhǔn)秸{(diào)用,如果promise對象使用了resolve方法,那么調(diào)用的時候,就走then回調(diào)。否則走catch錯誤捕獲回調(diào)。
? ? 其實到這里,就覺得promise就是個回調(diào)函數(shù)而已。跟jquery里面的ajax請求成功執(zhí)行的success函數(shù)一樣。但是promise厲害的地方就是多重回調(diào)。鏈?zhǔn)交卣{(diào)。
? ? 改變promise的狀態(tài),并不會終結(jié)后面代碼的執(zhí)行,但是resolve或者reject之后,promise的任務(wù)就完成了,后續(xù)操作最好放在then的回調(diào)里。
3.鏈?zhǔn)交卣{(diào)

鏈?zhǔn)交卣{(diào)就是同步的,一定要等到上一個promise的狀態(tài)改變了,才能立即執(zhí)行下一個promise。
我也不知道一般用到哪些地方,因為三方插件都有自己的promise的實現(xiàn)。這個我暫時也不知道用在哪兒。后續(xù)再進(jìn)行補(bǔ)充吧。
4.方法
resolve
reject
then
catch
finally
all
race
try: 可以執(zhí)行同步和異步的方法