Skip to content

Latest commit

 

History

History
45 lines (28 loc) · 1.19 KB

8.Promise.md

File metadata and controls

45 lines (28 loc) · 1.19 KB

Promise

优点:

  1. 解决嵌套问题
  2. 控制反转再反转

局限性:

  1. 错误被吃掉
throw new Error('error');
console.log(233333);
// 因为 throw error的原因, 代码会被阻断执行,并不会打印233

const promise = new Promise(null);
console.log(233333);
// 无效的方式使用Promise 出现了一个错误阻碍了正常Promise的构造

let promise = new Promise(() => {
    throw new Error('error')
});
console.log(2333333);
// 正常打印

Promise内部的错误不会影响到Promise外部的代码

并不是Promise独有的局限性, try...catch 也是这样,同样会捕获一个异常并且简单的吃掉错误

因为错误被吃掉,Promise链中的错误很容易被忽略掉,对于一个没有错误处理函数的Promise链,任何错误都会在链中传播下去,直到注册了错误处理函数

  1. 单一值

Promise只能有一个完成或一个拒绝的原因,有时候我们需要传递多个值,一般都是使用对象或者数组

  1. 无法取消

Promise一旦新建它就会立即执行,无法中途取消

  1. 无法得知pending状态

当处于pending状态时,无法得知目前进展到哪一个阶段