基于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))