问题标签 [angular-promise]
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 - 动态推送到 $q.all() 承诺数组
基本上,我正在尝试以 Angular 创建一个类似的 Promise 队列,除了它允许我在执行后将$q.all()
更多 Promise 推送到数组上。 $q.all()
为了更好地解释,想象给一个函数一个你想要执行一些代码的单一承诺then()
。但是,当您等待第一个承诺解决时,您向该函数提供了第二个承诺。现在我不想then()
在两者都完成之前被调用(类似于$q.all()
)。如果第一个 Promise 在提供第二个 Promise 之前完成,则该then()
函数将被调用两次。这应该适用于任意数量的承诺。
本质上,您最终会得到一个承诺队列,then()
每次队列被清空时都会执行一次(即所有当前提供的承诺都已解决)。我确信我可以找到一个很好的方法来做到这一点,只是看看 SO 镇上是否有人已经实施了某些东西,或者我缺少一个简单的选择。
javascript - 解决 $rootScope:infdig Infinite $digest Loop
我了解了无限摘要循环的基本概念以及它是如何发生的,但我遇到了问题。这是一个演示我的代码和问题的小提琴:
在 jsfiddle 控制台中,您将看到无限摘要循环。
基本上我必须对可能尚未加载的数据做出决定,所以我需要等待使用 then() 解决的承诺。我有一个叫做用户的承诺。代码中有两个不同的地方,我在用户上调用 then()。
- 就在我定义它之后。我需要根据它设置一个范围变量。
- 在另一个范围方法中,$scope.isAdmin()
对于第 2 点,可能会问为什么我不直接在 $scope.isAdmin() 方法中使用 $scope.user。问题是,有可能在用户的异步请求返回之前调用 $scope.isAdmin(),在这种情况下,我需要在从 $scope.isAdmin() 返回之前“阻止”。
我的问题是,$scope.isAdmin() 如何让 Angular 认为“监视”变量已更改并且摘要周期需要再次运行?
$scope.isAdmin() 实际上并没有改变任何东西。
这是精简的代码:
HTML:
和 JS:
javascript - 在预定义的“finally”方法之前将“then”方法添加到 $promise 链中
用例
我有一个$resource
调用,它执行 athen
后跟 afinally
进行清理。在等待服务器时,用户可能会与系统交互,我想在then
方法之前添加更多方法finally
。
如何将then
方法添加到在预定义之前执行的现有$promise
链中finally
?
示例代码
下面是所需用例的简化代码示例。将then
方法添加到现有链可以由$on
、$watch
或某些例程触发。
结果
期望的结果:
当前结果:
演示
javascript - returning function calling another returning function
Im trying to call a returning function inside another returning function but I'm getting myfunctionName is undefined.. here is the code
so how can I call myfunction1 inside myFunction2 whiouth getting the error "is not defined"
angularjs - 链接 Angular Promise
我在 Angular 中链接承诺时遇到了一些麻烦。我想要做的是从 API 中获取我的项目对象,然后检查项目所有者是否有任何容器,如果有,则触发另一个GET
来检索容器。最后,分配给的容器scope
应该为 null 或从 API 检索的对象。
现在,下面的这个例子立即解析为第二个then
函数,我得到了错误,TypeError: Cannot read property 'owner' of undefined
. 我究竟做错了什么?
javascript - Angular 工厂承诺中的变量范围
我无法将工厂中 Angular 承诺的数据返回到控制器。在这个例子中,
我想过滤本地数据以获取本地时间戳,将其与远程时间戳进行比较,如果本地时间戳小于远程时间戳,则指示控制器重新下载所有数据。
我正在过滤本地数据并获得预期的结果。我似乎陷入困境的地方是承诺。我可以在 .success 或 .then 方法中注销过滤后的远程数据,但从 Promise 中返回值的运气并不好。我知道这里的变量范围可能存在问题。
另外,我最好是从我的工厂返回一个布尔值到我的控制器(我应该更新吗?真/假)或者可能是一个带有本地和远程时间戳数据的小 obj,然后让控制器决定从那里做什么?
提前致谢。
javascript - AngularJS:解决自链接承诺
我知道可以链接承诺,如下例所示:
现在,如果我调用deferA.resolve(data)
this will resolve promiseA
,它的then
方法将运行,然后promiseB
被解析。最后 promiseBthen
将运行并解决promiseC
。平坦而简单(希望我做对了)。
但是,如果 Promise 与自身链接会发生什么?
如果我把上面的例子改成这样:
现在会发生什么?执行顺序是什么?
更重要的是,这个呢:
在这种情况下会发生什么?
angularjs - 在 HTML 模板中过滤 AngularJS Promise
在我的 HTML 模板中,我有以下内容:
person
在控制器中设置为:
并且Person
是一种资源:
问题是过滤器在承诺准备好之前被调用并导致读取未定义的值。处理这个问题的正确方法是什么?
现在我对属性使用 if 检查,但这似乎并不理想:
angularjs - AngularJS:模拟http服务(使用$httpBackend)来响应Promise API的成功方法的一些数据
我试图解释我的问题的简单版本。
1)我正在为控制器(myController)方法(减法)编写单元测试。
2) 使用 httpbackend 模拟 http 我想在减法中向 http 的成功函数返回 200 的响应,以降低其在任何虚拟 DELETE url 的成功函数中的值(在测试环境之外总是成功的)。
3)但我认为 expect(scope.testvalue) 仅为 5。任何帮助表示赞赏。
我看到的错误是(预期的) 错误:预期的错误为真。