问题标签 [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 回答
1021 浏览

javascript - Angular.js:是否不可能将已解决的承诺的属性分配给 $scope?

我正在尝试重构一个一直使用 Ajax 获取一些服务器数据的应用程序,然后将其附加到$rootScope控制器和服务以在引导应用程序之前获取,并且我一直在尝试使用 Promise 这样做$q

plnkr:http ://plnkr.co/edit/22yQUlyE9nbQ0WVjxWxY

在那个 plnkr 中,我试图让服务返回一些数据供一些控制器使用。

我正在像这样使用 $routeProvider 的解析属性

但是,当我尝试将已解决的承诺的“foo”属性分配给我的一个控制器中的 $scope 时,它​​就出现了错误。

当promise 解决并且实际 promise 对象$scope的属性结束时,不会更新,如http://plnkr.co/edit/22yQUlyE9nbQ0WVjxWxY?p=preview所示foo$scope

那么,我是否通过将 promise 的属性分配给 来做我绝对不应该在这里做的事情$scope?我的印象是路由的 resolve-property 意味着在 promise 解决之前不应该初始化任何东西。

0 投票
1 回答
1572 浏览

durandal - 延迟ajax和when() done()的Q解决方案

使用我的shell.js中的 Durandal SPA :

boot ()函数取决于datacontext.getUser(user)的结果。

我想在激活之前获取用户凭据。如果primeData()没有做太多(目前):

然后boot()没有从数据上下文中得到结果:

问题是:如何使用 Q 而不是 jQuery 的$.when().done()

0 投票
0 回答
750 浏览

javascript - AngularJS:离线时使用本地存储

我正在使用 AngularJS,我想知道如何在离线时使用本地存储数据。我在我的服务中试过这个:

这不起作用,数据被缓存但是当我关闭tomcat时没有绑定。所以我做了这样的事情:

在控制器中

这是有效的,但我不明白为什么第一个不。有人可以解释一下吗?

0 投票
1 回答
903 浏览

javascript - 如何将此 node.async 代码转换为使用 q?我需要回报承诺吗?

在我的控制器中的“视图”方法之前使用过,node-async但我想尝试使用q.

我目前正在尝试转换它

要使用 q... 我开始做类似的事情:

但它并没有像我预期的那样工作。我在这里做错了吗?我怎样才能做到这一点?

0 投票
2 回答
4195 浏览

node.js - 在 Q 中链接任意数量的 Promise

我想发送一个 HTTP 请求 N 次。我希望最终获得有关每个请求结果的信息。

运行请求功能一次效果很好。这是使用 Q.defer() 的 HTTP 请求函数:

如果我这样做,我会得到我期望的数据:

为了进行迭代,我尝试将其放入 for 循环中:

然后我这样称呼它:

我最终进入了成功回调(即,它记录了“在 iterateRequests 之后的成功回调中”)。但是,console.log(results) 在我从 runRequest().then() 回调获取日志之前打印,它是一个空数组。

关于链接/迭代承诺返回函数的任何想法或一些指导?

谢谢!

更新 后续问题以响应@abject_error 的回答:

检查了Q.all。绝对看起来像我需要的。而且它比我正在使用的要简单得多。我做了一个简单的测试用例来帮助我弄清楚它是如何工作的:

因此,如果我事先知道需要调用它的次数(以及我将调用哪些函数),我就会知道如何使用它。有关如何在数组中获取对返回者(在本例中)或 runRequest(在我的原始示例中)的动态调用次数的任何提示?

0 投票
1 回答
830 浏览

javascript - 在使用 Q 的 deferred/promise 时结合同步函数

我正在使用 Q 库做一堆延迟/承诺,它们工作得很好,但是一旦我在一个链式回调中取回我的一些数据,我想以某种方式操作它。

例如

所有的承诺都有效,但我想打电话didUserFavorite,然后让它继续到下一个延迟/承诺,这将是getCommentsPromise.

我需要把它变成一个承诺吗?可能不是因为我只是循环(同步)通过一个集合?哈尔普请。

0 投票
1 回答
41 浏览

javascript - 两种承诺的实现之间的区别

我在我的网站上使用了 Promise(仍在学习),我想知道这之间是否有区别:

和这个:

在第一次实现时,有时我会出错。

谢谢。

0 投票
2 回答
993 浏览

breeze - 将多个查询链接在一起的正确语法是什么?

我正在使用利用 Durandal 的 HotTowel SPA 模板。在我的 Durandal ViewModels 中,我使用 Breeze 从数据库中获取一些数据。

我有一个 datacontext 类,我将所有微风查询都放入其中,并且查询都遵循如下模式:

由于我在视图模型的 activate 方法中进行了异步调用,因此我必须在 activate 方法中返回从这些调用返回的承诺。

使用单个查询效果很好,如下所示:

但是,如果我需要执行两个查询,我会遇到问题,但仅限于我的应用程序的发布版本。我尝试使用以下语法执行此操作:

这在调试模式下可以正常工作,但是当我将它部署到服务器并且我的脚本被捆绑时,我得到一个不太清楚的异常。

t 不是函数

我也尝试在我的 datacontext 类中将它们链接在一起,如下所示,但我仍然遇到同样的错误。

所以我假设我对 Q.defer() 的理解不足以正确使用它,或者还有其他事情发生。

完成此操作的正确语法是什么?

0 投票
2 回答
8868 浏览

javascript - kriskowal/q node.js q.all 和传播

我有一个函数需要传递给它的三个先前承诺的结果。一个是线性相关的,另外两个可以同时运行。我想使用 q.all 来解决三个承诺,然后使用 .spread 将结果传递给第四个。但是我的代码不起作用。任何帮助,将不胜感激。

我可以在 node-inspector 中跟踪代码,并看到前 3 个 Promise 正在被调用。但是,没有调用 .spread 调用的函数。关于为什么的任何线索?.fail 也没有被击中。

0 投票
1 回答
1719 浏览

node.js - Restify.js (Connect/Express) 中间件在 Promise 回调中忽略对 next() 的调用

所以。在尝试为我正在构建的 Restify.js 应用程序实现一些基本的中间件时,我遇到了一些怪癖,并特别关注next()并承诺回调。

以通用形式表达问题:

承诺解决:

承诺被拒绝

我在做任何明显错误的事情吗?有什么见解吗?这似乎与承诺回调有关,它们是否以某种方式抑制了对 的调用next()