这个问题一直让我发疯。我一定在做一些非常愚蠢的事情,但我无法弄清楚它是什么。
我想将 Q Promise 库与 jQuery 一起使用。我有 0.9.6 版的 Q 和 1.9.1 版的 jQuery(都通过 bower 安装)。
这个讨论暗示(最后)这样的事情应该起作用:
var promise = Q.when($.get("https://github.com/kriskowal/q"));
我不能完全判断这是否是如何将 Q 与 jQuery 版本 1.9.1 一起使用(jQuery 显然在 promise 方面发生了很多变化)。但是,如果我从 Firefox 的控制台(当前页面加载了 Q 和 jQuery)触发它,Ajax 调用显然会被正确触发(Firebug 暗示它返回状态码为 200)。但承诺似乎已被拒绝(据我所知)。
例如,如果我这样做:
promise.inspect();
它将统计信息列为已拒绝。如果我用这样的东西触发我的承诺:
var promise = Q.when($.get("https://github.com/kriskowal/q")).fail(function(x) { console.log("Failed"); })
如果我查看fail
作为参数传递给该方法的内容,它看起来像一个 jQuery 承诺对象(至少据我所知),它并没有真正阐明(似乎几乎不符合成为的资格)失败的“原因”)。
我尝试了各种排列和组合,但我认为我应该求助于 SO 而不是仅仅在黑暗中跌跌撞撞。
非常感谢您提供任何帮助。