Promise.resolve(promise) 的用例是什么?

What is the use case of Promise.resolve(promise)?

我们可以调用 Promise.resolve(value) 也可以调用 Promise.resolve(promise)。我可以理解应该在哪里以及如何使用第一个调用,但不确定第二个调用。

为什么不直接使用 promise 作为参数呢?我的意思是打电话:

promise1.then()

而不是:

Promise.resolve(promise1).then()

?

如果您有一个 可能是 Promise 的值,Promise.resolve 就很棒。

在我现在正在处理的程序中,我有很多地方创建了一个 UI 带有回调的组件来处理各种输入。有时,这些回调需要 return 承诺,有时则不需要。我总是将 return 值包装在 Promise.resolve 中,而不是将责任放在回调上,然后 boom,问题就解决了。

如果 promise1 真的是一个 Promise,那么这个结构可以用来 从一个 Promise 转换成另一个不同库的 Promise,如果 Promise 例如定义为 var Promise = require('bluebird');

例如如果您使用旧版本的 jQuery,其中从函数返回的 Defered 对象的行为不像 ES6 conform promises 那样有用。

或者,如果您想将本机 ES6 Promise 与具有更多功能的库(如 bluebrid)一起使用。

Promise.resolve 基本上就是 "I don't care what this is, give me a promise"。一般来说,每当你得到一个论点 可能 是一个承诺 Promise.resolve 是使用它的正确方法(相对于笨拙地检测它是一个承诺)。

它的用途是:

  • 处理来自不同图书馆的外国承诺。
  • 使用可能是承诺的值,也可能是普通值。

它也含蓄地用承诺调用了很多。

  • 当您将混合承诺数组、外部 "thenables" 和值传递给 Promise.allPromise.race - 它隐含地 Promise.resolve 所有值。
  • 类似地,当您 return 一个外国 "thenable" 或来自 Promise#then(...) 的值时,它会调用 Promise.resolve
  • 当您 await 时,一个值 Promise.resolve 被隐式调用。

以此类推