通过例子理解Promise

基于ES6语法 。

创建Promise

// 能正常完成的例子,任务成功做完是调用 resolve,参数是一个字符串消息
let promiseOK = new Promise(
    (resolve, reject) => {
        // 这里是任务逻辑
        resolve("成功完成");
    }
);

// 不能正常完成的例子,任务失败,调用 reject, 参数是一个字符串消息
let promiseReject = new Promise(
    (resolve, reject) => {
        // 这里是任务逻辑
        reject("无法完成");
    }
);

// 任务执行过程中遇到异常的例子,没有调用 resolve, 也没有调用 reject, 
// 只是使用 throw 抛出错误消息
let promiseException = new Promise(
    (resolve, reject) => {
        // 这里是任务逻辑
        throw("异常");
    }
);

运行Promise并根据结果情况进行处理

运行结果为成功 – 调用了 resolve

promiseOK.then((data) => {
    console.log("OK:" + data)
}).catch((data) => {
    console.log("ERROR:" + data)
})

上面的例子输出为 :

OK:成功完成

链式两次then

// 会输出 : 
// THEN1:成功完成
// THEN2:undefined
promiseOK.then((data) => console.log("THEN1:" + data))
         .then((data) => console.log("THEN2:" + data))

运行过程中被驳回– 调用了 reject

promiseReject.then((data) => {
    console.log("OK:" + data)
}).catch((data) => {
    console.log("ERROR:" + data)
})

上面的例子输出为 :

ERROR:无法完成

链式两次catch

// 会输出 : 
// ERROR1:无法完成
promiseReject.catch((data) => console.log("ERROR1:" + data))
             .catch((data) => console.log("ERROR2:" + data))

运行过程中遇到了异常– 使用了 throw

promiseException.then((data) => {
    console.log("OK:" + data)
}).catch((data) => {
    console.log("ERROR:" + data)
})

上面的例子输出为 :

ERROR:异常

链式两次catch

// 会输出 : 
// ERROR1:异常
promiseException.catch((data) => console.log("ERROR1:" + data))
                .catch((data) => console.log("ERROR2:" + data))

猜你喜欢

转载自blog.csdn.net/andy_zhang2007/article/details/80179029