问题标签 [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.
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 解决之前不应该初始化任何东西。
durandal - 延迟ajax和when() done()的Q解决方案
使用我的shell.js中的 Durandal SPA :
boot ()函数取决于datacontext.getUser(user)的结果。
我想在激活之前获取用户凭据。如果primeData()没有做太多(目前):
然后boot()没有从数据上下文中得到结果:
问题是:如何使用 Q 而不是 jQuery 的$.when().done():
javascript - AngularJS:离线时使用本地存储
我正在使用 AngularJS,我想知道如何在离线时使用本地存储数据。我在我的服务中试过这个:
这不起作用,数据被缓存但是当我关闭tomcat时没有绑定。所以我做了这样的事情:
在控制器中
这是有效的,但我不明白为什么第一个不。有人可以解释一下吗?
javascript - 如何将此 node.async 代码转换为使用 q?我需要回报承诺吗?
在我的控制器中的“视图”方法之前使用过,node-async
但我想尝试使用q
.
我目前正在尝试转换它
要使用 q... 我开始做类似的事情:
但它并没有像我预期的那样工作。我在这里做错了吗?我怎样才能做到这一点?
node.js - 在 Q 中链接任意数量的 Promise
我想发送一个 HTTP 请求 N 次。我希望最终获得有关每个请求结果的信息。
运行请求功能一次效果很好。这是使用 Q.defer() 的 HTTP 请求函数:
如果我这样做,我会得到我期望的数据:
为了进行迭代,我尝试将其放入 for 循环中:
然后我这样称呼它:
我最终进入了成功回调(即,它记录了“在 iterateRequests 之后的成功回调中”)。但是,console.log(results) 在我从 runRequest().then() 回调获取日志之前打印,它是一个空数组。
关于链接/迭代承诺返回函数的任何想法或一些指导?
谢谢!
更新 后续问题以响应@abject_error 的回答:
检查了Q.all。绝对看起来像我需要的。而且它比我正在使用的要简单得多。我做了一个简单的测试用例来帮助我弄清楚它是如何工作的:
因此,如果我事先知道需要调用它的次数(以及我将调用哪些函数),我就会知道如何使用它。有关如何在数组中获取对返回者(在本例中)或 runRequest(在我的原始示例中)的动态调用次数的任何提示?
javascript - 在使用 Q 的 deferred/promise 时结合同步函数
我正在使用 Q 库做一堆延迟/承诺,它们工作得很好,但是一旦我在一个链式回调中取回我的一些数据,我想以某种方式操作它。
例如
所有的承诺都有效,但我想打电话didUserFavorite
,然后让它继续到下一个延迟/承诺,这将是getCommentsPromise
.
我需要把它变成一个承诺吗?可能不是因为我只是循环(同步)通过一个集合?哈尔普请。
javascript - 两种承诺的实现之间的区别
我在我的网站上使用了 Promise(仍在学习),我想知道这之间是否有区别:
和这个:
在第一次实现时,有时我会出错。
谢谢。
breeze - 将多个查询链接在一起的正确语法是什么?
我正在使用利用 Durandal 的 HotTowel SPA 模板。在我的 Durandal ViewModels 中,我使用 Breeze 从数据库中获取一些数据。
我有一个 datacontext 类,我将所有微风查询都放入其中,并且查询都遵循如下模式:
由于我在视图模型的 activate 方法中进行了异步调用,因此我必须在 activate 方法中返回从这些调用返回的承诺。
使用单个查询效果很好,如下所示:
但是,如果我需要执行两个查询,我会遇到问题,但仅限于我的应用程序的发布版本。我尝试使用以下语法执行此操作:
这在调试模式下可以正常工作,但是当我将它部署到服务器并且我的脚本被捆绑时,我得到一个不太清楚的异常。
t 不是函数
我也尝试在我的 datacontext 类中将它们链接在一起,如下所示,但我仍然遇到同样的错误。
所以我假设我对 Q.defer() 的理解不足以正确使用它,或者还有其他事情发生。
完成此操作的正确语法是什么?
javascript - kriskowal/q node.js q.all 和传播
我有一个函数需要传递给它的三个先前承诺的结果。一个是线性相关的,另外两个可以同时运行。我想使用 q.all 来解决三个承诺,然后使用 .spread 将结果传递给第四个。但是我的代码不起作用。任何帮助,将不胜感激。
我可以在 node-inspector 中跟踪代码,并看到前 3 个 Promise 正在被调用。但是,没有调用 .spread 调用的函数。关于为什么的任何线索?.fail 也没有被击中。
node.js - Restify.js (Connect/Express) 中间件在 Promise 回调中忽略对 next() 的调用
所以。在尝试为我正在构建的 Restify.js 应用程序实现一些基本的中间件时,我遇到了一些怪癖,并特别关注next()
并承诺回调。
以通用形式表达问题:
承诺解决:
承诺被拒绝
我在做任何明显错误的事情吗?有什么见解吗?这似乎与承诺回调有关,它们是否以某种方式抑制了对 的调用next()
?