1. 程式人生 > >ES6 Promise對象then方法鏈式調用

ES6 Promise對象then方法鏈式調用

res post AR 返回 ise AI down ole -m

then()方法的作用是Promise實例添加解決(fulfillment)和拒絕(rejection)狀態的回調函數。then()方法會返回一個的Promise實例,所以then()方法後面可以繼續跟另一個then()方法進行鏈式調用。

let p = new Promise((resolve, reject) => {
    setTimeout(resolve, 1000, 'success');
});
p.then(
    res => {
        console.log(res);
        return `${res} again`;
    }
)
    .then(
        res => console.log(res)
    );
// 連續
// success
// success again

但是前一個then()方法中的回調函數中又可能返回一個Promise實例,這時候後面一個then()方法中的回調函數會等前一個Promise實例的狀態發生變化才會調用。

let p = new Promise((resolve, reject) => {
    setTimeout(resolve, 1000, 'success');
});
p.then(
    res => {
        console.log(res);
        return new Promise((resolve, reject) => {
            setTimeout(resolve, 1000, 'success');
        });
    }
)
    .then(
        res => console.log(res)
    );
// 相隔1000ms
// success
// success

ES6 Promise對象then方法鏈式調用