Angular是否有一个预定义的对象来存放所有当前的承诺?
Does Angular have a predefined object that houses all current promises?
我有一个控制器,我可以允许一切除了一个函数(让我们称之为thatOneFunction())异步运行。这样做的原因是,onefunction()依赖于大约10个已经解决的承诺,否则它在需要执行的范围内没有数据。
我已经在网上看到了多个例子,告诉你如何具体地抓住单个get/queries/services的承诺,但我还没有看到一种方法来检查所有的承诺一次都被解决了——也许是借助于一个我不知道的Angular状态变量?比如:
var currentPromises = $state.promises;
currentPromises.then(thatOneFunction());
或者如果不是内置变量,是否有一种方法可以动态生成当前所有未完成的承诺列表,然后我可以使用。then()?这将非常有帮助,因为在这个应用程序中,我将有许多具有这种结构的页面。
我已经尝试过/正在做什么"到目前为止,我有一个工作,但它需要一些硬编码,我宁愿不继续。它是基于插入一个函数调用,检查该函数被调用了多少次的计数器,将其与应该调用该函数的承诺次数进行比较(在计算控制器中的承诺后硬编码),如果它已经完成了所有必需的承诺,则调用thatOneFunction()。
谢谢你的帮助/指点。
我的代码示例位(实名/变量更改):
控制器$scope.runAfterAllPromises = function() {
*code dependedent on all promises here*
}
MySvc.loadList(function (results) {
$scope.myList = results;
});
$scope.runAfterAllPromises();
app.service("MySvc", ['$resource', function ($resource) {
this.loadList = function (callBackFunction) {
var stateRes = $resource('/api/ListApi');
stateRes.query(function (ListResults) {
if (callBackFunction && typeof (callBackFunction) === 'function') {
callBackFunction(ListResults)
};
})
你可以链式承诺,如果有帮助的话?
所以像这样:
var promises = [];
promises.push(yourPromise1());
promises.push(yourPromise2());
promises.push(yourPromise3());
$q.all(promises).then(function(){ ...});
你是这个意思吗?
简短的回答:不,不存在这样的对象。
现在,如何实现你想要实现的目标:
var allPromise = $q.all([promise1, promise2, promiseN]);
allPromise.then(success).catch(error);
编辑:在你的"一个男人可以梦想的评论"之后,我想加上这个:
你可以重写$q.defer函数,跟踪所有被创建的延迟对象,并获得它们的承诺。
显然,这可能会有一些延迟创建的问题,但永远不会解决,但可能是实现所需功能的最简单方法。如果你想从头开始,你可以看看angular装饰器,它为扩展angular提供商提供了一个功能框架
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在只能有一个asp.net表单的主页上从asp.net页面中的javascript中获取值
- 有可能在来自链接的警报中有一个值吗
- 是否<asp:文本框>有一个onFocusLost事件
- 让谷歌数据图表有一个24小时x轴
- PayPal按钮是否有一个简单的选项,其中金额基于一些用户输入
- 我确实有一个表单,如果用户输入了输入,它应该检查否定或空的输入框,并抛出一条警告消息
- 在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展
- 当知道同一hiearch中至少有一个元素时,遍历到元素.结构使用jquery
- PNG图像被覆盖,但每个图像都有一个链接可以更改,每次一个-Javascript/jQuery/CSS
- JQuery是否有一个“;移动“;作用或者有没有一种更紧凑的方法来做到这一点
- Regex或javascript每X个连续单词中有一个单词
- Jquery时间启动计时器,我有一个计时器的代码,但它在页面加载时启动
- Node sequelize回调承诺期望一个函数,是否有一种方法可以通过函数调用删除已声明的函数
- JavaScript是否承诺.都有一个回调,当有成功和失败时触发
- 一个解析器/承诺有多个生产者
- Angular是否有一个预定义的对象来存放所有当前的承诺?
- 服务有一个模拟的服务依赖,它返回承诺,在测试中挣扎
- 问美元.当有一个被拒绝的承诺时,一切都解决了
- bluebird有一个说服函数来把函数包装在承诺中吗?