场景:对于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))