【发布时间】:2014-12-19 07:56:02
【问题描述】:
我知道如何在 Kris Kowal 的 q 中使用 var defer = Q.defer(); 创建承诺,调用 defer.resolve(); 和/或 defer.reject() 并返回 defer.promise。但是阅读docs,似乎有另一种方法可以创建一个承诺......
来自文档:
Q.Promise(解析器)
同步调用
resolver(resolve, reject, notify)和 返回一个promise,其状态由传递给的函数控制 解析器。这是一个替代的 Promise-creation API,它具有 与延迟概念相同的权力,但没有引入另一个 概念实体。如果resolver抛出异常,返回的promise将被拒绝 将抛出的异常作为拒绝原因。
这是我尝试过的:
function () {
return Q.Promise(function (resolve, reject) {
(...do something...)
resolve(5); // or: reject(error);
});
}
但这并没有按预期工作!
谁能举个例子,如何使用Q.Promise?
更新: 感谢您的投票!我要了一个用法示例,因此一个简单的“你以正确的方式使用它”更有帮助!顺便说一句:它静默失败,是的,我附加了一个错误处理程序!
函数未命名的原因是我将它与 map 和 reduce 一起使用以创建延迟的承诺链,但似乎 resolver 函数永远不会称为...因此我要求(再次)用法示例...
【问题讨论】:
-
如何它不起作用?你得到什么错误?你用的是什么版本的 Q?
-
“这不能按预期工作”。我们是不是要猜测你出了什么问题?
-
你没有命名你的函数,你的JS语法不正确。
标签: javascript node.js promise q