用q创造承诺的另一种方式
Alternative way to create a promise with q
我知道如何用var defer = Q.defer();
在Kris Kowal的q中创建promise,调用defer.resolve();
和/或defer.reject()
并返回defer.promise
。但阅读这些文件,似乎有另一种方式可以创造承诺。。。
来自文档:
Q.Promise(解析器)
同步调用
resolver(resolve, reject, notify)
和返回状态由传递给的函数控制的promise解析器。这是一个替代承诺创建API,具有与递延概念相同的权力,但没有引入另一个概念实体。如果解析器抛出异常,则返回的promise将被拒绝将抛出的异常作为拒绝原因。
这就是我尝试过的:
function () {
return Q.Promise(function (resolve, reject) {
(...do something...)
resolve(5); // or: reject(error);
});
}
但这并没有像预期的那样奏效!有人能举一个例子,如何使用Q.Promise
吗
更新:谢谢你投了否决票!我要求提供一个用法示例,因此一个简单的"以正确的方式使用它"更有帮助!顺便说一句:它默默地失败了,是的,我附加了一个错误处理程序!
该函数未命名的原因是,我将其与map
和reduce
一起使用,以创建一个延迟的承诺链,但似乎从未调用解析器函数。。。因此,我(再次)要求提供一个用法示例。。。
看看你的两个例子,我猜你正在这样做:
var q = require('q');
因此Q.Promise
不会起作用,但q.Promise
会起作用。
相关文章:
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 单击()的另一种方式
- Rails 以一种方式格式化 DateTime.now 和 DateTime.yesterday 另一种方式 - 我如何
- 另一种方式是Javascript中的函数堆叠
- require.js是require的另一种方式
- 在创建 toLowerCase 函数时,一种方式比另一种方式更好
- 以两种不同的方式编写函数:一种方式会导致 TypeError,另一种方式不会.为什么
- 编写 if 语句的另一种方式
- 存储JS变量和画布数据的另一种方式,用户可以稍后检索
- 从以另一种方式编写的输入中返回一个字符串
- 用q创造承诺的另一种方式
- 访问AngularJS隔离作用域的另一种方式
- Jquery动画以一种方式工作,而不是另一种方式
- 在facebook应用程序自动完成的另一种方式
- 打印稿,Angular设计——传递依赖的另一种方式
- Scala到JS的加密不起作用,但另一种方式工作得很好
- 警报框以一种方式工作,而不是以另一种方式
- 在表中以AM/PM格式显示小时的另一种方式:在angular JS中,每小时从上午12点到晚上11点
- Emberjs 1.0:如何创建模型并以另一种方式显示它们
- Javascript:将关联数组转换为字符串的最佳方式,稍后再转换成另一种方式