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

angularjs - ui路由器解析链接承诺

使用 ui-router 更改状态时我需要一些数据,这些数据相互依赖,所以我必须使用链接承诺

我的状态是

它返回未定义。谁知道为什么?

0 投票
1 回答
4218 浏览

angularjs - AngularJS - 如果有新请求,取消以前的 $resource $promises

我有一个包含 2 个字段的表单:用户名和密码。
当我的用户名模型更改时,我向 API 发出请求以执行一些检查。

当我以 t 毫秒间隔对工厂进行 x 次调用时$resource,我想知道是否:

  • 在我的控制器中,最后$promise收到的将对应于用户最后一次输入。
  • 之前的承诺将被取消。

我试图找到一种方法来模拟我的 API 调用延迟(因为我在本地工作并且每个响应都是即时的),但我只能找到$http服务示例。

这是一个 jsFiddle 来公开这个案例:http:
//jsfiddle.net/Jfwh9/1/

HTML

应用程序

谢谢!

0 投票
1 回答
1501 浏览

javascript - 在 AngularJS 中管理受限页面的拦截器

几天前我刚开始使用 AngularJS,我的拦截器遇到了问题,它从服务器响应中拦截 401 状态。

当返回 401 并在该事件上触发重定向时,它会广播类型为“loginRequired”的消息。

问题是,如果我在未登录的情况下尝试访问受限页面,我会在重定向到登录页面之前看到页面闪烁片刻。我仍然是异步东西,承诺等方面的初学者。有人能指出我做错了什么吗?

这是我的拦截器。如您所见,它非常简单,但我将其精简以解释我的观点,并且在进一步开发之前尝试理解事物。

拦截器

我的拦截器的注入

受限页面的路由

受限页面控制器

$rootScope 事件观察器

我的问题显然与我处理拦截器和 $q 的方式有关。我在github上找到了另一种创建拦截器的方式,但这不是官方文档使用的方式,所以我认为这可能是旧方式,在我看来它不如将它放在工厂中那么干净。他只是在他的模块的配置函数中定义了路由之后才放了这段代码。但是这段代码有效,我没有得到页面闪存。

我在 Github 上找到的另一种方法

但我的目标不仅仅是“让它发挥作用”,而且我讨厌“如果它没有坏就不要修复它”的口头禅。我想了解我的代码有什么问题。谢谢!

0 投票
1 回答
416 浏览

javascript - 如何在 AngularJS 中中断/返回 Angular 异步调用

我有以下项目结构:
- PageController.js
- BusinessService.js
-NetworkManager.js

在我的 PageController 我有以下调用:

在我的业务服务中:

http 调用正在NetworkManager课堂上进行。所以这里的问题是,当我没有用户数据时,我想中断通话,所以我使用reject.
这将返回一个错误:Cannot read property 'then' of undefined关于PageController.

那么,考虑到我的情况,如果我没有 userData,我想取消请求,我该如何完成呢?

0 投票
1 回答
994 浏览

javascript - AngularJS $q - 返回直接解析

我使用一种期望得到承诺的方法。但是,有时会promise立即解决。目前,如果promise立即解决,我仍然通过承诺,并使用以下内容:

如果有办法,直接返回解析,例如类似的内容return $q.resolve()并跳过那两行?

0 投票
1 回答
290 浏览

angularjs - AngularJS - 为什么承诺会触发控制器重新加载?

我有一个关于 AngularJS 的问题;这是我不理解的行为——也就是说,我曾预料到一件事,但得到了完全不同的东西。现在意外的行为本身可能是正确的,但我想了解它为什么会发生。

鉴于这个非常粗略的代码(这是充当 POC 的实际代码):

到目前为止,一切都很好; 我有一个scrapy 函数,当我ng-click按下某个按钮时,会调用scrapy 函数,它会触发一个promise,一秒钟后列表会收到一个带有插入值的推送。

正确的?至少; 那是我的假设...

结果发生了其他事情,我不知道为什么,或者背后的原因是什么。

当我在浏览器中启动我的应用程序并单击按钮两次时;这是 console.log 告诉我的:

这里最大的问题是:

  1. 为什么在 promise resolve 期间会重新执行控制器功能?
  2. 我怎样才能阻止这种情况发生?

[编辑]

根据要求;HTML(原样):

顺便说一句:这是 yeoman 生成的,使用routeProvider

[/编辑]

0 投票
1 回答
194 浏览

javascript - 简化 Javascript 中的 Promise

以下代码片段是否等效?

版本 1

版本 2

0 投票
2 回答
1582 浏览

javascript - AngularJS 承诺和嵌套控制器

我有以下困境:

如果我有两个这样的嵌套控制器:

在 Controller1 我有一个字段

这是承诺的结果(对外部服务器的异步调用)。到目前为止,一切都很好。但是我该如何处理以下情况:

我需要在Controller2中使用

就在控制器被触发时。如何设置第二个控制器,等待第一个控制器中的承诺得到解决,然后才评估该 var userName 分配?(否则我会得到 $scope.$parent 未定义)

0 投票
2 回答
3241 浏览

angularjs - Iterate over returned angular resource in controller

I have a controller that accesses a resource Tag like so:

which resolves to something like this:

For this particular controller, the returned tags should have an additional attribute "active": true, like { name: "tag1", label: "Tag1", active: true }.

How can I iterate over the returned promise once it is resolved to add this boolean?

0 投票
1 回答
474 浏览

javascript - 如何在复杂的资源加载序列中正确链接承诺?

在角度代码中,我有一个这样的链式承诺:

这些函数中的每一个都返回一个promise,它从资源中加载东西,并在错误和成功时额外修改$scope,例如:

我打算在控制器初始化中的代码中使用,如下所示:

但是,这并不像我想的那样工作。理想情况下,消息“在所有承诺解决后我会在这里做某事”必须在所有承诺解决后出现。相反,我可以看到它出现的时间早于来自列出 ensureTypesLoaded 的函数中已解决的承诺的消息。

我想创建一个函数 ensureTypesLoaded 这样,即:

  • 它返回一个承诺,当所有链式加载都被解决时,该承诺被解决;
  • 如果任何“内部”承诺失败,该函数不应继续下一次调用,而是返回被拒绝的承诺。
  • 显然,如果我调用 ensureTypesLoaded().then(...),则 then() 中的内容必须在 ensureTypesLoaded 中的所有内容都解决后调用。

请帮助我正确构建链式承诺。