Promise的優缺點:
優勢:Promise 的寫法是回調函數的改進,使用then方法之後,異步任務的兩段執行看得更清楚了。then將原來異步函數的嵌套關係轉變爲鏈式步驟異步
缺點:Promise 的最大問題是代碼冗餘,原來的任務被Promise 包裝了一下,無論什麼操做,一眼看去都是一堆 then,原來的語義變得很不清楚。函數
Promise是一個構造函數,本身身上有all、reject、resolve這幾個眼熟的方法,
原型上有then、catch等一樣很眼熟的方法prototype
Promise.prototype.then=function(){對象
}
Promise.prototype.catch=function(){原型
}回調函數
new Promise()
Promise對象表明一個異步操做,有三種狀態:
pending(進行中)、resolved(已完成)
pending(進行中) 和Rejected(已失敗)。io
一旦狀態改變,就不會再變,任什麼時候候均可以獲得這個結果。Promise對象的狀態改變,只有兩種可能:從Pending變爲Resolved;從Pending變爲Rejected。console
var p = new Promise(function(resolve, reject){
//作一些異步操做
setTimeout(function(){
console.log('執行完成');
resolve('隨便什麼數據');
}, 2000);
});function
Promise的構造函數接收一個參數,是函數,而且傳入兩個參數:resolve,reject,分別表示異步操做執行成功後的回調函數和異步操做執行失敗後的回調函數。構造函數
function runAsync(){ var p = new Promise(function(resolve, reject){ //作一些異步操做 setTimeout(function(){ console.log('執行完成'); resolve('隨便什麼數據'); }, 2000); }); return p;}runAsync();