我们可以拨打Promise.resolve(value)
以及Promise.resolve(promise)
。我可以理解我应该在哪里以及如何使用第一个电话,但我不确定第二个电话。
为什么不首先简单地使用promise作为参数?我的意思是打电话:
promise1.then()
而不是:
Promise.resolve(promise1)。然后()
答案 0 :(得分:6)
Promise.resolve
基本上是“我不在乎这是什么,给我一个承诺”。一般来说,每当你得到一个可能是一个承诺Promise.resolve
的论证时,就是使用它的正确方法(相对于检测它是一个笨拙的承诺)。
对以下内容有用:
隐含地通过承诺大量调用。
Promise.all
或Promise.race
- 它隐含Promise.resolve
所有值。Promise#then(...)
的值时,它会在其上调用Promise.resolve
。await
隐含地调用了值Promise.resolve
时。等等。
答案 1 :(得分:3)
如果您的可能是承诺的值,Promise.resolve
就很棒。
在我正在进行的程序中,我有很多地方可以创建一个带有回调的UI组件来处理各种输入。有时,那些回调需要返回承诺,有时则不会。我总是将返回值包装在Promise.resolve
并且繁荣,解决了问题,而不是把责任放在回调上。
答案 2 :(得分:3)
如果promise1
确实是一个Promise,那么如果Promise
是例如,则此构造可能用于将转换从一个Promise转换为另一个Promise中的另一个。定义为var Promise = require('bluebird');
例如如果您使用旧版本的jQuery,其中从函数返回的Deferred对象的行为不符合ES6的承诺,则非常有用。
或者,如果您想将本机ES6 Promise与像bluebrid这样具有更多功能的库一起使用。