1. 程式人生 > >ES6之Promise物件

ES6之Promise物件

首先,文章內容基本來自ECMAScript 6 入門(作者 阮一峰)

簡介

Promise物件是非同步程式設計的一種解決方案。所謂Promise,簡單來說就是一種容器,裡面包含著未來可能結束的一個事件的結果。 Promise包含三種狀態,pending,fulfilled,rejected。 表現為從pending到fulfilled,或者從pending到rejected。

下面是一個Promise例項的生成

// es5 寫法
 const promise = new Promise(function(resolve, reject) {
        if (/*這裡填寫操作(一般是非同步操作)*/
) { resolve(value); } else { reject(error) } })
   // es6 寫法,以後預設使用es6語法
   const promiseEs = new Promise((resolve, reject) => {
        if (/*操作*/) {
            resolve(value);
        } else {
            reject(error);
        }
    })

操作部位一般是一個非同步方法,resolve和reject是es6官方給的方法可以獲取到操作部位的返回結果

promise的使用

    promise.then((value) => {
        console.log("success" + value);
    }, (error) => {
        console.log("error" +error);
    })

then方法接受兩個回撥函式作為引數,第一個方法在Promise物件狀態從pending變為fulfilled時呼叫,第二個方法在狀態從pending變為rejected時候呼叫。 另外 上面的使用方法可以寫成類似於try/catch的形式,將rejected時的處理剝離出來放到catch裡面處理。 promise的使用2

    promise.then((value) => {
        console.log("success" + value);
    }).catch((error) => {
        console.log("error" +error);
    })