const promise = new Promise(function(resolve, reject) { // ... 異步操做 if (/* 異步操做成功 */){ resolve(value); } else { reject(error); } });
注意:Promise構造函數的參數是一個函數,而且該函數的二個參數也是函數。javascript
promise.then( function(value) {//resolved狀態的回調函數 // success } , function(error) {//rejected狀態的回調函數 // failure } );
注意:Promise的實例用.then指定resolved和rejected狀態的回調函數。其中,第二rejected回調函數能夠爲空。
注意:.then指定的回調函數是異步回調函數,須要注意運行時機(同步代碼完成以後)和this指針指向(window)java
Promise對象的狀態有3種:es6
let pms = new Promise( function(rlv,rjt){ rlv(1); } ); pms.then( function(value){ console.log(value) } );//1 //再次添加 pms.then( function(value2){ console.log(value2) } );//1
Promise能夠嵌套Promise,以下:編程
const p1 = new Promise(function (resolve, reject) { // ... }); const p2 = new Promise(function (resolve, reject) { // ... resolve(p1); })
Promise.then方法返回的是一個新的Promise實例,所以能夠像下面這樣調用json
getJSON("/posts.json").then(function(json) { return json.post; }).then(function(post) { // ... });
all:全部都變成fulfilled,則返回fulfilled。任意一個編程rejected,則返回rejected
race:任意一個率先編程fulfilled或rejected,則返回fulfilled或rejectedpromise
const pa = Promise.all([p1, p2, p3]); const pr = Promise.race([p1, p2, p3]);