用q创建承诺的替代方法

时间:2014-10-23 15:26:45

标签: javascript node.js promise q

我知道如何使用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!我问了一个用法示例,因此一个简单的“你以正确的方式使用它”更有帮助!顺便说一句:它无声地失败了,是的,我附上了一个错误处理程序!

为什么函数未命名的原因是我与mapreduce一起使用它来创建延迟的承诺链,但似乎解析器函数永远不会被调用...因此我要求(再次)用法示例 ...

1 个答案:

答案 0 :(得分:0)

看看你的两个例子,我猜你是这样做的:

var q = require('q');

因此Q.Promise无法正常工作,而是q.Promise将会工作。