简单的新+然后为Q承诺

时间:2014-03-11 01:21:56

标签: promise q

我正在尝试使用Q Promise实现,但面临奇怪的不一致。

当我在Chrome m33中运行时,代码如下:

new Promise(function(resolve, reject) {
    resolve(1);
}).then(function(value) {
    console.log(value);
});

它的效果与我预期的一样 - 它返回另一个Promise并记录1

但是如果我将相同的代码调用到(function (Promise) { ... }(window.Q));中,我会在控制台中看到resolve回调的主体,而不是值。

Fiddle to look at - 适用于Chrome和Aurora。

我遗漏了什么或是图书馆中的错误吗?

PS:Q版本1.0.0

2 个答案:

答案 0 :(得分:1)

看起来,Q.promise替代原生Promise,而不是Q本身:fiddle

但是,这很奇怪。我无法迁移到本机承诺,而无需稍后更改代码。 原因Q.promise - > Promise,但Q.all - > Promise.all

答案 1 :(得分:0)

升级到Q v1.0.1,它引入了Q.Promise,它支持ES6 promise接口的公共子集。 Q类似于Promise.resolve,而new Promise取代了以前的Q.defer()。 ES6没有完全解除Q API,但在很大程度上解除了类似函数的行为。