promise允许使用链式调用来解决回调地狱的问题,特别是在异步过程中,通过promise 可以保证代码的整洁性与可读性。
promise的三个状态:promise对象代表一个异步操作,有三种状态:
1.pengding:进行中
2.fulfilled(resolved):已成功
3.rejected:已失败
状态由pending变为resolved,或者由pending变为rejected,都取决于异步操作的结果,任何其他操作都无法改变这个状态。
Promise.resolve().then(() => {
throw "猜猜我的状态"
});
Promise {: '猜猜我的状态'}
[[Prototype]]: Promise
[[PromiseState]]: "rejected"
[[PromiseResult]]: "猜猜我的状态"
Promise.resolve().then(() => {
return new Error("error!!!")
});
Promise {: Error: error!!!
at :2:12}
::::抛出异常,状态从pending=>rejected;返回异常,状态由pending变为=>fulfilled
3. Promise.resolve().then((resolve, reject) => {
setTimeout(() => {
console.log(1);
}, 100);
}).then((resolve, reject) => {
setTimeout(() => {
console.log(2);
}, 100);
}).then((resolve, reject) => {
setTimeout(() => {
console.log(3);
}, 100);
})
结果:1,2,3
Promise.resolve().then((resolve, reject) => {
setTimeout(() => {
console.log(1);
}, 100);
}).then((resolve, reject) => {
setTimeout(() => {
console.log(2);
throw new Error();
}, 100);
}).catch((resolve, reject) => {
setTimeout(() => {
console.log(3);
}, 100);
})
结果:1,2



