promise有几种状态,什么时候会进入catch?
三个状态: pending、fulfilled、reject 两个过程: padding -> fulfilled、padding -> rejected当pending为rejectd时,会进入catch
如何访问promise实例内部的状态?以及promise的实例方法、静态方法有那些?
通过promise的实例方法访问
promise.then(res => {
console.log(res)
}).catch(error => {
console.error(error)
})
promise的实例方法
.then()
// promise状态为fulfilled
参数:函数,函数内部的参数是resolve传过来的实参
.catch()
// promise状态为rejected
参数:函数,函数内部的参数是reject传过来的实参
.finally()
无论promise状态是成功还是失败,都会执行里面的代码
promise的静态方法
Promise.all([pro1,pro2])
将pro1和pro2包装成数组作为实参传递进去
返回值:promise对象。结果 =》pro1,pro2都成功才成功,有一个失败就失败
Promise.race([pro1,pro2])
将pro1和pro2包装成数组作为实参传递进去
返回值:promise对象。结果 =》pro1,pro2谁先回来就用谁都结果(无论成功或者失败)
Promise.any([pro1,pro2])
将pro1和pro2包装成数组作为实参传递进去
返回值:promise对象。结果 =》pro1,pro2都失败才失败,有一个成功就成功
Promise.resolve()
参数:任意
返回值:状态为fulfilled的promise对象
Promise.reject()
参数:任意
返回值:状态为rejected的promise对象
Promise 中reject 和 catch 处理上有什么区别 ?
reject 是用来抛出异常,catch 是用来处理异常 reject 是 Promise 的方法,而 catch 是 Promise 实例的方法 reject后的东西,一定会进入then中的第二个回调,如果then中没有写第二个回调,则进入catch 网络异常(比如断网),会直接进入catch而不会进入then的第二个回调