promise.prototypr.then()

Promise 实例具有then 方法,也就是说,then 方法是定义在原型对象

Promise .prototype上的。它的作用是为Promise实例添加状态改变时的回调函数。

then方法的第一个参数是resolved状态的回调函数,第二个参数是rejected状态的回调函数。

then方法返回的是一个新的Promise实例(注意,不是原来那个Promise实例)。因此可以采用链式写法。即then方法后面在调用另一个then方法。

// 链式操作 Promise精髓:状态
function runAsync1() {
    var p =  new Promise(function (resolve, reject) {
        setTimeout(function () {
            console.log('执行1')
            resolve('huahau1')
        },2000)
    })

    return p ;
}
function runAsync2() {
    var p =  new Promise(function (resolve, reject) {
        setTimeout(function () {
            console.log('执行2')
            resolve('huahau2')
        },2000)
    })

    return p ;
}
function runAsync3() {
    var p =  new Promise(function (resolve, reject) {
        setTimeout(function () {
            console.log('执行3')
            resolve('huahau3')
        },2000)
    })

    return p ;
}

// 链式操作
runAsync1()
    .then(function (data) {
    console.log(data);
    return runAsync2();
})
    .then(function (data) {
        console.log(data);
          return runAsync3();
    })
    .then(function (data) {
        console.log(data);
    })
View Code

 输出结果:

采用链式的then方法,可以指定一组按照次序调用的回调函数,此时,前一个回调函数,有可能返回的一个Promise对象(即有异步操作),后一个回调函数,就会等待该Promise对象的状态发生改变,才会被调用。

 

posted @ 2018-12-04 17:14  jade柒  阅读(289)  评论(0编辑  收藏  举报