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.all
或 Promise.race
- 它隐含地 Promise.resolve
所有值。
- 类似地,当您 return 一个外国 "thenable" 或来自
Promise#then(...)
的值时,它会调用 Promise.resolve
。
- 当您
await
时,一个值 Promise.resolve
被隐式调用。
以此类推
我们可以调用 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.all
或Promise.race
- 它隐含地Promise.resolve
所有值。 - 类似地,当您 return 一个外国 "thenable" 或来自
Promise#then(...)
的值时,它会调用Promise.resolve
。 - 当您
await
时,一个值Promise.resolve
被隐式调用。
以此类推