toFrankie / blog

种一棵树,最好的时间是十年前。其次,是现在。
21 stars 1 forks source link

Promise 不能被取消,真的算是缺点吗? #277

Open toFrankie opened 1 year ago

toFrankie commented 1 year ago

配图源自 Freepik

前两天面试的时候,面试官问到 Promise 有哪些缺点?

我的回答是,在处理多个异步操作时,需要编写多个 then()catch() 方法来处理结果,尽管可以有效解决回调地狱(Callback Hell),但也会有纵向发展的趋势,不够优雅。

就没想起以下这几点:

  • 无法取消 Promise,一旦创建它就会立即执行,无法中途取消;
  • 在不设置回调函数情况下,Promise 内部抛出错误,不会反馈到外部;
  • 当处于 pending 状态,无法得知目前进展到哪个阶段。

哦,原来上面这些是它的缺点啊,当时就没往这方面想。

但是细想一下,第一点真的算是它的缺点吗?

有兴趣的话,请看以下两个问答: