Promise的作用

164 阅读1分钟

Promise简介

Promise是异步编程,它的出现是用来解决回调地狱(callback),Promise对象用来封装一个异步操作并可以获取其结果。

基本语法:

new Promise(function (resolve,reject) {
    ......
})

Promise的三种状态

  • pending:进行中,初始状态
  • resolved:成功
  • rejected:失败 如图表示了Promise的状态:

image.png

Promise的作用

在没有Promis之前,我们在回调中有另一个异步操作的时候,我们就只能使用嵌套的方式来解决

//地狱回调
setTimeout(function () {  //第一层
    console.log('1');
    setTimeout(function () {  //第二层
        console.log('2');
        setTimeout(function () {   //第三层
            console.log('3');
            setTimeout(function () {   //第四层
                console.log('4');
                setTimeout(function () {   //第五层
                    console.log('5');
                }, 1000)
            }, 2000)
        }, 3000)
    }, 4000)
}, 5000)

现在有了Promise我们可以这样解决

function fn(num) {
    let p = new Promise(function (resolve, reject) {
        //处理异步任务
        let flag = true;
        setTimeout(function () {
            if (flag) {
                resolve(num)
            }
            else {
                reject('操作失败')
            }
        })
    })
    return p;
}

fn('0').then((data) => {
    console.log(data);
    return fn('1');
}).then((data) => {
    console.log(data);
    return fn('2')
}).then((data) => {
    console.log(data);
    return fn('3')
}).then((data) => {
    console.log(data);
    return fn('4')
}).then((data) => {
    console.log(data);
    return fn('5')
}).catch((data) => {
    console.log(data);
})

Promise使我们代码结构变得简单,易懂,易维护,使异步代码同步化,这就是Promise的作用与用法