Javascript 使用q创建承诺的替代方法

Javascript 使用q创建承诺的替代方法,javascript,node.js,promise,q,Javascript,Node.js,Promise,Q,我知道如何使用var defer=q.defer;,在Kris Kowal的q中创建承诺;,调用defer.resolve;和/或defer.reject并返回defer.promise。但是读了这篇文章,似乎有另一种方法可以创造一个承诺 从文档中: Q.Promisersolver 同步调用resolverresolve、reject、notify和 返回其状态由传递给的函数控制的承诺 分解器。这是一个具有 与延迟概念相同,但不引入其他概念 概念实体 如果解析器抛出异常,则返回的承诺将被拒绝

我知道如何使用var defer=q.defer;,在Kris Kowal的q中创建承诺;,调用defer.resolve;和/或defer.reject并返回defer.promise。但是读了这篇文章,似乎有另一种方法可以创造一个承诺

从文档中:

Q.Promisersolver

同步调用resolverresolve、reject、notify和 返回其状态由传递给的函数控制的承诺 分解器。这是一个具有 与延迟概念相同,但不引入其他概念 概念实体

如果解析器抛出异常,则返回的承诺将被拒绝 将抛出的异常作为拒绝原因

这就是我尝试过的:

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会起作用。

它怎么不起作用?你有什么错误?您使用的是什么版本的Q?这不符合预期。我们是想猜测你出了什么问题吗?你没有命名你的函数,你的JS语法不正确。文档建议var Q=require'Q'和Q.Promise。在我的代码中,我使用小写的q和q。但这样的错误并不是问的真正原因,所以。。。