Promise.resolve(Promise)的用例是什么
What is the use case of Promise.resolve(promise)?
我们可以调用Promise.resolve(value)
和Promise.resolve(promise)
。我能理解我应该在哪里以及如何使用第一个电话,但不确定第二个电话。
为什么不简单地把承诺作为论据呢?我的意思是打电话:
promise1.then()
而不是:
Promise.resolve(promise1).then()
Promise.resolve
基本上是"我不在乎这是什么,给我一个承诺"。一般来说,每当你得到可能是promise的论点时,Promise.resolve
是正确的处理方法(而不是笨拙地检测它是promise)。
它适用于:
- 与来自不同图书馆的外国承诺合作
- 使用可能是承诺的价值观,也可能是纯粹的价值观
它也被隐式地调用了很多promise。
- 当您向
Promise.all
或Promise.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这样具有更多功能的库结合使用。
相关文章:
- 这是什么 ==- javascript 运算符
- 我的单元测试选项是什么
- 打破承诺链的好方法是什么
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Javascript中的空白是什么
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 在JavaScript中拆分日期字符串的更好方法是什么
- 将jQuery.ech()方法转换为本地JavaScript抽象的最佳方法是什么
- 处理浮点错误的最佳方法是什么
- javascript导入的最佳实践是什么
- 基于窗口宽度jquery的函数的替代方法是什么
- 在ng重复循环中显示条件内容的最佳方式是什么
- 我的客户端选项是什么
- 这是什么“;要求“;事情
- 在 Promise 调用的错误函数回调后附加对象的用法是什么
- 在循环中使用 q promise 的最佳方法是什么?等待链完成,然后再迭代到下一个
- 在ES6 Promise中允许多次解析/拒绝的原因是什么
- 使用 ES6 的 Promise.all() 时限制并发性的最佳方法是什么?
- 在promise . all中实现长承诺链的最佳实践是什么?
- Promise.resolve(Promise)的用例是什么