问题标签 [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.

0 投票
1 回答
1216 浏览

javascript - 动态推送到 $q.all() 承诺数组

基本上,我正在尝试以 Angular 创建一个类似的 Promise 队列,除了它允许我在执行后将$q.all()更多 Promise 推送到数组上。 $q.all()

为了更好地解释,想象给一个函数一个你想要执行一些代码的单一承诺then()。但是,当您等待第一个承诺解决时,您向该函数提供了第二个承诺。现在我不想then()在两者都完成之前被调用(类似于$q.all())。如果第一个 Promise 在提供第二个 Promise 之前完成,则该then()函数将被调用两次。这应该适用于任意数量的承诺。

本质上,您最终会得到一个承诺队列,then()每次队列被清空时都会执行一次(即所有当前提供的承诺都已解决)。我确信我可以找到一个很好的方法来做到这一点,只是看看 SO 镇上是否有人已经实施了某些东西,或者我缺少一个简单的选择。

0 投票
1 回答
13261 浏览

javascript - 解决 $rootScope:infdig Infinite $digest Loop

我了解了无限摘要循环的基本概念以及它是如何发生的,但我遇到了问题。这是一个演示我的代码和问题的小提琴:

http://jsfiddle.net/eS5e5/1/

在 jsfiddle 控制台中,您将看到无限摘要循环。

基本上我必须对可能尚未加载的数据做出决定,所以我需要等待使用 then() 解决的承诺。我有一个叫做用户的承诺。代码中有两个不同的地方,我在用户上调用 then()。

  1. 就在我定义它之后。我需要根据它设置一个范围变量。
  2. 在另一个范围方法中,$scope.isAdmin()

对于第 2 点,可能会问为什么我不直接在 $scope.isAdmin() 方法中使用 $scope.user。问题是,有可能在用户的异步请求返回之前调用 $scope.isAdmin(),在这种情况下,我需要在从 $scope.isAdmin() 返回之前“阻止”。

我的问题是,$scope.isAdmin() 如何让 Angular 认为“监视”变量已更改并且摘要周期需要再次运行?

$scope.isAdmin() 实际上并没有改变任何东西。

这是精简的代码:

HTML:

和 JS:

0 投票
2 回答
703 浏览

angularjs - 使用带有 $http.get 的 Ui-bootstrap 分页获取 api 数据时出错

我在这里工作的分页

但是我想更改数据以使用我正在创建的 API 数据,但是我遇到了一个错误,我不知道为什么。

这是错误:

这是代码:

0 投票
1 回答
2365 浏览

javascript - 在预定义的“finally”方法之前将“then”方法添加到 $promise 链中

用例

我有一个$resource调用,它执行 athen后跟 afinally进行清理。在等待服务器时,用户可能会与系统交互,我想在then方法之前添加更多方法finally

如何将then方法添加到在预定义之前执行的现有$promise链中finally

示例代码

下面是所需用例的简化代码示例。将then方法添加到现有链可以由$on$watch或某些例程触发。

结果

期望的结果:

当前结果:

演示

jsFiddle

0 投票
1 回答
59 浏览

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"

0 投票
2 回答
104 浏览

angularjs - 链接 Angular Promise

我在 Angular 中链接承诺时遇到了一些麻烦。我想要做的是从 API 中获取我的项目对象,然后检查项目所有者是否有任何容器,如果有,则触发另一个GET来检索容器。最后,分配给的容器scope应该为 null 或从 API 检索的对象。

现在,下面的这个例子立即解析为第二个then函数,我得到了错误,TypeError: Cannot read property 'owner' of undefined. 我究竟做错了什么?

0 投票
1 回答
1105 浏览

javascript - Angular 工厂承诺中的变量范围

我无法将工厂中 Angular 承诺的数据返回到控制器。在这个例子中,

http://jsfiddle.net/c3xjE/

我想过滤本地数据以获取本地时间戳,将其与远程时间戳进行比较,如果本地时间戳小于远程时间戳,则指示控制器重新下载所有数据。

我正在过滤本地数据并获得预期的结果。我似乎陷入困境的地方是承诺。我可以在 .success 或 .then 方法中注销过滤后的远程数据,但从 Promise 中返回值的运气并不好。我知道这里的变量范围可能存在问题。

另外,我最好是从我的工厂返回一个布尔值到我的控制器(我应该更新吗?真/假)或者可能是一个带有本地和远程时间戳数据的小 obj,然后让控制器决定从那里做什么?

提前致谢。

0 投票
1 回答
539 浏览

javascript - AngularJS:解决自链接承诺

我知道可以链接承诺,如下例所示:

现在,如果我调用deferA.resolve(data)this will resolve promiseA,它的then方法将运行,然后promiseB被解析。最后 promiseBthen将运行并解决promiseC。平坦而简单(希望我做对了)。

但是,如果 Promise 与自身链接会发生什么?

如果我把上面的例子改成这样:

现在会发生什么?执行顺序是什么?

更重要的是,这个呢:

在这种情况下会发生什么?

0 投票
2 回答
87 浏览

angularjs - 在 HTML 模板中过滤 AngularJS Promise

在我的 HTML 模板中,我有以下内容:

person在控制器中设置为:

并且Person是一种资源:

问题是过滤器在承诺准备好之前被调用并导致读取未定义的值。处理这个问题的正确方法是什么?

现在我对属性使用 if 检查,但这似乎并不理想:

0 投票
1 回答
8147 浏览

angularjs - AngularJS:模拟http服务(使用$httpBackend)来响应Promise API的成功方法的一些数据

我试图解释我的问题的简单版本。
1)我正在为控制器(myController)方法(减法)编写单元测试。
2) 使用 httpbackend 模拟 http 我想在减法中向 http 的成功函数返回 200 的响应,以降低其在任何虚拟 DELETE url 的成功函数中的值(在测试环境之外总是成功的)。
3)但我认为 expect(scope.testvalue) 仅为 5。任何帮助表示赞赏。

我看到的错误是(预期的) 错误:预期的错误为真。