场景:对于new Promise,都需要一个结束状态来终结此操作,无论是resolve/reject;那么resolve/reject是否就表示终结了流程的执行呢?
原因:resolve/reject只能改变promise的状态,但是reject和resolve都无法让函数剩下的部分暂停执行。
解决方式:通常情况下,会在需要返回的resolve/reject后,加上return,进行终止js流程的操作。
function test(a, b) {
return new Promise((resolve, reject) => {
if (a === 1) {
console.log(1)
reject(1)
return
}
if (b === 1) {
console.log(2)
reject(2)
return
}
console.log(3)
resolve(3)
})
}
test(1, 0).then((result) => console.log('result: ', result)).catch((error) => console.log('error: ', error))
人生海海,码途徐徐,在每一段经历中,留下成长的印记,爱自己爱生活爱思考!