您什么时候想创建自己的 JavaScript Promise?

When would you want to create your own JavaScript Promise?

我是 JavaScript 的新手,正在学习 Promises。我无法确定您何时想要创建自己的 Promise。最初我的印象是“执行函数”(传递给 Promise 构造函数的函数)是由浏览器 API 异步处理的(如果你的 JavaScript 在浏览器中是 运行 ).有了这种理解,您就可以,例如,使用您创建的 Promise 在后台异步执行一些 long-运行 计算。

但是,我了解到执行函数实际上是在创建 Promise 后立即同步执行的(因此如果您在该执行函数中有一些长 运行 代码,则会阻塞执行的主线程)。所以现在我想知道在什么情况下你想定义你自己的承诺。我的理解是,许多异步函数(例如 fetch)已经 return promises - 因此将这些函数包装在 promise 中是多余的。

有人可以举例说明您何时想要创建自己的 Promise 吗?对不起,如果这是一个愚蠢的问题,或者如果我的理解有误,仍在学习中。

提前致谢!

My understanding is that a lot of the asynchronous functions like fetch for example already return promises

实际上,大多数都没有。 setTimeoutaddEventListener 等 - 它们都接受回调,当你想使用承诺时需要 promisified

已经 return 承诺的本机功能的趋势仍然是最近才出现的,只有像 fetch 这样的新 API 才能做到这一点。对于图书馆来说,情况是相似的——现代图书馆会提供承诺,但旧的图书馆仍然存在。

除此之外,你是对的 - 你很少需要 new Promise,在正常代码中你要做的就是承诺链接(或者甚至只使用 async/await ).然而,new Promise 仍然是构成所有这些抽象的原始构建块,它不会消失。