问题标签 [q]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
367 浏览

jquery - jQuery async calls on array

I'm trying to get the following scheme to work: I have a an ajax call that returns an array of objects (promise). Now, I have a succeeded function that does additional handling on each item in the array, including making other async ajax calls. Of course, this creates a headache because the main succeeded() function returns before the sub-functions are done, which is not what I want. Each sub-function call also returns a promise, and I want to leave the main function only when all items load.

Here's what I've tried so far. The main function getItemData is not waiting for the Q.all(...) to return. I'm using the JS Async and the Q.js libraries:

0 投票
2 回答
2142 浏览

node.js - Stop execution after promise times out

I've been using the Q module to implement promises on a project I'm working on. I'm using the static method Q.fncall() to create a promise out of a node.js style function (based on callbacks returning err,result).

The problem is that I need to stop the execution of said function after a certain amount of time, so I used the function "timeout" of the Q module. So, after x amount of time, the "error" callback on the done function executes and let's me handle the timeout but the function itself keeps getting executed until it reaches its final callback even if the handler is not listening anymore.

The question is: Is there any way to stop the execution of a function after the timeout is executed? I know I can just set a variable on the timeout handler and keep checking in the function if the timeout is over, but I'm hoping for a cleaner way of achieving this.

The code is as follows:

And the test1 function:

}

In my ideal situation, the code inside setTimeout(...,2000) should never be executed. Is this possible?

Thanks in advance.

0 投票
1 回答
597 浏览

javascript - Q 承诺:回调的调用顺序与注册的顺序相同吗?

我正在使用Q Promise 库。我的代码依赖于这样一个事实,即单个 Promise 的回调按照与注册时相同的顺序执行。

http://jsfiddle.net/HgYtK/1/

这确实产生了正确的结果,但我不知道它是规范的一部分还是可能打破界限的巧合。

0 投票
1 回答
1098 浏览

node.js - 为什么我的 Q 链式承诺拒绝不符合我的预期?

我在这里做错了什么?我有一段看起来像这样的代码:

我的存储库代码如下所示:

当两个承诺都得到解决时,一切正常,当我拒绝客户承诺时,正如预期的那样,但是当我解决客户承诺并拒绝用户承诺时,测试就会失败。这是测试:

0 投票
1 回答
1671 浏览

knockout.js - 我在 Durandal、KO 和 Breeze 中正确使用 Q 吗?

长期 .NET 开发人员刚刚构建了我的第一个 Web 应用程序。我正在尝试使用我认为我在架构上理解的 Durandal、Breeze 和 Knockout。然而,这并没有改变这样一个事实,即我觉得我只是带着一些 jQuery 的基本概念来到了异国他乡。

我在使用 Q 的 Promise 概念进行异步编程时遇到了问题。通常,在 KO 视图模型中会有一个用于 Durandal 的“激活”处理程序,其功能如下:

其中调用 Breeze 数据上下文以通过 api 从实体获取数据,并且“组织”是 ko.observableArray。在我的应用程序中,这工作正常。

但是,在我的情况下,我的视图有两个实体列表,因此我需要对我与 Q 放在一起的 datacontext 进行两次调用,如下所示:

据我所知,这些 datacontext 调用中的任何一个都可以自行工作并将 ok 绑定到视图。但是当他们像这样智商时,似乎只有第一个有效。我担心我在这里遗漏了一些基本的东西。

我可以在网络流量中看到两个 api 调用都是针对两组实体进行的。并通过网络返回良好的结果。

但是,似乎第二次调用的 ko.observable (userRoles) 并没有以任何数据结束。如果我交换它们的顺序,在 Q 数组中,第一个有效。在我看来,我在这里忽略了一些东西,并且绑定发生得太快了。

如果我在这里使用的 Q 是正确的,我会假设我在其他地方还有更多的调试要做。提前致谢。

这是使用 Breeze 的 ebodatacontext:

0 投票
1 回答
120 浏览

durandal - Hot Towel - Durandal 是否需要修补以使用 Q 而不是 jQuery 承诺?

在基于 John Papa 的 Hot Towel 模板开发我的第一个 SPA 应用程序时,我遇到了一个说明,表明 Durandal 使用 jQuery Promise,而 Hot Towel 中的所有其他库都使用 Q 作为 Promise。Durandal 确实有一个页面解释了如何打补丁,但我发现我的应用程序在有和没有它的情况下都一样。

http://durandaljs.com/documentation/Q/

我看到了关于 Q 优势的评论,对此我很满意,但我想知道这方面的专家是否建议修补 Durandal?

0 投票
1 回答
701 浏览

mongoose - Q 承诺和猫鼬与 connection.insert

我有这段代码:

当我执行它时,承诺没有得到解决(并且数据没有被插入);

如果我采用简单的承诺方法,它会起作用:

我究竟做错了什么?

ps看起来像

作品。现在我迷路了:)

谢谢

0 投票
1 回答
12888 浏览

node.js - 创建一个空的承诺

我在一系列可能会或可能不会做某事的承诺中拥有一个功能。例如

where getYear, party, 和sleep所有返回的承诺。有没有更简洁的方法来编写 else 语句?也就是说,什么都不做,但仍然返回一个可链接的承诺?

0 投票
1 回答
70838 浏览

angularjs - Angular $q.when 是如何工作的?

$q.when有人可以解释一下AngularJS是如何工作的吗?我正在尝试分析如何$http工作并发现了这一点:

这是来自 Chrome 控制台的配置对象:

接下来发生什么?这个对象如何得到解决或拒绝?

0 投票
1 回答
241 浏览

node.js - 链接承诺上的节点 kriskowal/q 承诺堆栈错误

以下代码在第一个 .then 上出错:

我不明白为什么这段代码会失败。来电:

它调用的函数:

唯一可行的方法是,如果我将函数 validateSettings 更改为匿名函数并将其像这样内联:

为什么我不能以这种方式链接命名函数?