1.什么是Promise
1.1Promise的含義
Promise 是異步編程的一種解決方案,比傳統(tǒng)的解決方案——回調(diào)函數(shù)和事件——更合理和更強大障般。它由社區(qū)最早提出和實現(xiàn)调鲸,ES6 將其寫進了語言標(biāo)準(zhǔn),統(tǒng)一了用法挽荡,原生提供了Promise對象藐石。
所謂Promise簡單一點講就是一個容器,里面保存著某個未來才會結(jié)束的事件(通常是一個異步操作)的結(jié)果徐伐。從語法上說,Promise 是一個對象募狂,從它可以獲取異步操作的消息办素。Promise 提供統(tǒng)一的 API,各種異步操作都可以用同樣的方法進行處理祸穷。
1.2 Promise兩個特點
1.對象的狀態(tài)不受外界影響性穿,Promise對象對表一個一步操作,有三種狀態(tài):pedding(進行中)/fulfilled(已成功)/ rejected(已失斃坠觥)需曾。只有一步操作的結(jié)果可以決定當(dāng)前是哪一個狀態(tài),這也是Promise名字的由來祈远,它的英語意思就是“承諾”呆万,表示其他手段無法改變。
2.一旦狀態(tài)改變车份,狀態(tài)就不會再變谋减,任何時候都可以得到這個結(jié)果。Promise的狀態(tài)只有兩種改變方式:pedding-fulfilled或pedding-rejected扫沼。只有這兩種情況發(fā)生出爹,不會再改變庄吼,會一直保持這個結(jié)果,這是稱為resolved(已定型)
1.3Promise的缺點
1.無法取消Promise严就,一旦新建就會馬上執(zhí)行
2.如果不設(shè)置回掉函數(shù)总寻,Promise內(nèi)部會拋出錯誤,不會反應(yīng)到外部
3.處于Promise狀態(tài)時梢为,不知道進行到哪一步了
2.基礎(chǔ)用法
ES6規(guī)定渐行,Promise對象是一個構(gòu)造函數(shù),用來生成一個Promise實例
下面創(chuàng)造一個Promise實例:
let promise=new Promite(function(resolve, reject){
if (/* 異步操作成功 */){
resolve(value);
} else {
reject(error);
}
});