promise

文章介绍了异步编程中的回调地狱问题以及如何利用Promise来解决这一问题。Promise具有pending、fulfilled和rejected三种状态,通过then方法链式调用来管理回调函数,使得代码结构更加清晰。示例中展示了如何将嵌套的setTimeout转换为Promise链式调用,以避免回调地狱。
摘要由CSDN通过智能技术生成

异步编程的方式,可以解决回调地狱的问题

特点:

有三个状态

pending(正在进行)到fulfilled(已经成功)--成功---resolve

pending(正在进行)到rejected(已经失败)--失败---reject

接收一个回调函数 里面有两个参数

回调地狱

setTimeout(function() {
            console.log(1);
            setTimeout(function() {
                console.log(2);
                setTimeout(function() {
                    console.log(3);
                    setTimeout(function() {
                        console.log(4);
                    },4000)
                },3000)
            },2000)
        },1000)

解决回调地狱

const p = new Promise(function (resolve, reject) {
    setTimeout(function () {
        console.log(1);
        resolve(2)
    }, 1000)
})

p.then(function (value) {
    return new Promise(function (resolve, reject) {
        setTimeout(function () {
            console.log(value);
            resolve(3)
        }, 2000)
    })
}
).then(
    function (value) {
        return new Promise(function (resolve, reject) {
            setTimeout(function () {
                console.log(value);
                reject(4)
            }, 3000)
        })
    }
).then(
    function (value) {
        return new Promise(function (resolve, reject) {
            setTimeout(function () {
                console.log(value);

            }, 3000)
        })
    }, function (error) {
        return new Promise(function (resolve, reject) {
            setTimeout(function () {
                console.log('失败' + error);

            }, 3000)
        })
    }
)

Promise.then()方法

两个参数都是函数,第一个是成功的函数,第二个是失败的函数

Promise实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值