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

javascript - AngularJS - 一个成功的承诺能否返回空数据

只是想知道,我正在编写测试用例并且无法找到关于 null 是否可以在 angularJS 承诺中返回的明确答案(而不是一个名为 null 的对象)

0 投票
3 回答
8114 浏览

angularjs - Angular $q .catch() 方法在 IE8 中失败

我在 IE8 上遇到了一个奇怪的错误,同时试图捕获一个 promise 拒绝(基本ngResource调用返回的承诺):

此代码使用.then(success, fail)语法:

但是这个.then(success).catch(fail)语法失败了:

指向该.catch()行的 IE 错误是:

预期标识符

难道我做错了什么 ?有人重现吗?还是由于关键字受限而成为常见的 IE8?

谢谢

0 投票
5 回答
15732 浏览

javascript - AngularJS - 承诺重新抛出捕获的异常

在下面的代码中, $q promise的catch函数捕获了一个异常:

但是,当我查看控制台日志输出时,我看到以下内容:

在此处输入图像描述

该异常在 Angular 中被捕获,但也被浏览器的错误处理捕获。这种行为确实会在 Q 库中重现。

它是一个错误吗?我如何才能真正用 $q 捕获异常?

0 投票
2 回答
4889 浏览

angularjs - AngularJS:$q -> 事物的延迟 API 顺序(生命周期)以及谁调用摘要?

$q 服务在 angularjs 中非常强大,使用异步代码让我们的生活更轻松。

我是 Angular 的新手,但使用延迟 API 对我来说并不是很新鲜。我必须说我How to use对文档的部分完全没问题+文档中有非常有用的链接+我也检查了源代码。

我的问题更多是关于Angular中的 deferred 和 promise API 对象的底层部分。它们生命周期中的确切阶段是什么以及它们如何与(s)交互。我的假设是,当承诺解决时 - 它会调用摘要循环???是/否?rootScope.Scope

是否可以针对以下方面的特定方面提供详细的答案:

  1. 在您描述的每个步骤/阶段中发生的事情的顺序是什么
  2. 何时创建具有新承诺实例的新延迟对象 - 谁知道它/它重要吗?
  3. 当 promise 对象被解析时,范围是如何更新的?我是否必须在回调中手动更新它,否则摘要将被自动调用并更新 rootScope就像在这里声明的一样
  4. 至少提到一种从 Promise 回调中更新范围的方法
  5. 我认为还有很多其他有用的方面,请随时提供它们。

我会感谢并接受最详细的答案,并尽可能多地引用文档或源代码(我自己找不到)。我找不到任何与此主题的先前讨论,如果已经存在的话 - 请发布链接。

ps:对于任何可以通过为此问题提出更好的标题来提供帮助的人+1,请在评论中添加您的建议。

干杯!

0 投票
7 回答
118678 浏览

javascript - 如何使用 $q 从 AngularJS 服务返回已解决的承诺?

我的服务是:

我通过以下方式在我的config文件中调用它:

但是,它抱怨这then不是一个功能。我不是在返回已解决的承诺吗?

0 投票
1 回答
2501 浏览

javascript - 计算 angularjs 中未决的 $q 承诺

我正在开发一个复杂的 angularjs 应用程序。复杂含义单一视图可以从代码的不同位置查询多个不同的数据源,例如页面部分控制器或指令控制器。有时,其中一些请求可能需要更长的时间才能解决,从而使视图处于某种无效状态。我希望能够显示某种“数据加载”横幅并禁用用户与视图的交互,直到所有承诺都得到解决。这适用于使用 $q.all() 函数的简单屏幕。但是,应用程序的构建方式更加以业务逻辑为中心,而不是以数据源为中心。因此,对于更复杂的屏幕,不会有一个地方可以自然地访问所有的承诺。在代码中创建这样一个地方似乎很麻烦。

我想出了这个解决方案:

是否有更少的hacky来实现相同的目标?

0 投票
3 回答
822 浏览

javascript - 角度承诺:拦截“然后”

现在我有一个chartModelService用这个方法命名的 Angular 服务:

我有一个使用这些数据的 Angular 控制器:

我想使用该服务在chartModelService.translate(data)内部chartModelService而不是控制器中执行。换句话说,我想将控制器更改为下面的代码,chartData它接收到的代码已经被翻译:

我该如何更改才能在返回承诺的数据之前chartModelService.fetchChartModel()执行?translate()

0 投票
3 回答
165 浏览

javascript - 有没有一种简单的方法可以返回对 $q.all 的成功调用而无需创建 $q.defer() 变量?

我的应用程序有许多同步和异步(执行 $http 调用)方法。在控制器中,我有这样的代码:

即使我不需要等待 syncMethod1() 我把它放在 $q.all 中以保持简单,并允许我在将来需要时将方法更改为异步。

对于同步功能,我这样称呼它们:

我想知道的是,是否有一种方法可以让同步方法返回 $q.all 数据,但不需要创建延迟变量,然后返回 defer.promise?只是试图使同步方法尽可能简单。

0 投票
1 回答
1318 浏览

angularjs - 除非我使用承诺(trigger.io AJAX 请求),否则 AngularJS $rootScope 会失去价值

所以这很奇怪。$rootScope在函数中正确设置,但随后失去其价值。如果我使用承诺,我只能保持价值。(!?)

我正在使用 trigger.io (Forge) AJAX 请求,成功后我更新$rootScope.queries. 在成功块内,$rootScope.queries设置正确,如alert.

虽然此时,afterretrieveHistory()已被调用,$rootScope.queries现在是空的。视图没有更新,使用 Chrome 控制台检查显示它是空的。

假设我向函数添加了一个 Promise,但实际上并没有将 Promise 用于任何事情。

有了这个承诺,就$rootScope.queries保持它的价值。视图更新,Chrome 检查器显示该值设置正确。

为什么是这样?我根本不理解这种行为。为什么我不能保留$rootScope.queries原始代码中的值?为什么承诺会保持价值?

0 投票
1 回答
449 浏览

angularjs - AngularJS 应用程序在查询期间冻结

我正在运行一个带有 Parse 后端的 Angular 应用程序。当我进行查询时,应用程序会冻结,即使 DOM 不依赖于当时正在抓取的数据。这就是为什么这个答案没有那么有用的原因。有没有办法让应用程序的其余部分在某些请求正在进行时运行?

下面是冻结所有内容直到请求解决的代码。Parse Javascript SDK 带有 Promise,这是 'QS.errorQuery.find()` 返回的内容。