我知道如何使用var defer = Q.defer();
在Kris Kowal的 q 中创建承诺,致电defer.resolve();
和/或defer.reject()
并返回defer.promise
。但是阅读docs,似乎还有另一种创造承诺的方式......
来自文档:
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
?
更新 感谢downvoting!我问了一个用法示例,因此一个简单的“你以正确的方式使用它”更有帮助!顺便说一句:它无声地失败了,是的,我附上了一个错误处理程序!
为什么函数未命名的原因是我与map
和reduce
一起使用它来创建延迟的承诺链,但似乎解析器函数永远不会被调用...因此我要求(再次)用法示例 ...
答案 0 :(得分:0)
看看你的两个例子,我猜你是这样做的:
var q = require('q');
因此Q.Promise
无法正常工作,而是q.Promise
将会工作。