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

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

本文关键字:Promise 是什么 resolve      更新时间:2023-09-26

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

为什么不简单地把承诺作为论据呢?我的意思是打电话:

promise1.then()

而不是:

Promise.resolve(promise1).then()

Promise.resolve基本上是"我不在乎这是什么,给我一个承诺"。一般来说,每当你得到可能是promise的论点时,Promise.resolve是正确的处理方法(而不是笨拙地检测它是promise)。

它适用于:

  • 与来自不同图书馆的外国承诺合作
  • 使用可能是承诺的价值观,也可能是纯粹的价值观

它也被隐式地调用了很多promise。

  • 当您向Promise.allPromise.race传递一个混合promise、外部"thenables"和值的数组时,它会隐式地Promise.resolve的所有值
  • 类似地,当您从Promise#then(...)返回一个外部"theable"或值时,它将对其调用Promise.resolve
  • 当您使用await时,会隐式调用值Promise.resolve

等等。

如果您有一个可能是Promise的值,那么Promise.resolve就很好了。

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

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

例如,如果您使用较旧版本的jQuery,其中从函数返回的Defered对象的行为与符合ES6的promise不同,那么这将非常有用。

或者,如果您想将本机ES6 Promise与bluebridge这样具有更多功能的库结合使用。