问题标签 [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 - AngularJS - 一个成功的承诺能否返回空数据
只是想知道,我正在编写测试用例并且无法找到关于 null 是否可以在 angularJS 承诺中返回的明确答案(而不是一个名为 null 的对象)
angularjs - Angular $q .catch() 方法在 IE8 中失败
我在 IE8 上遇到了一个奇怪的错误,同时试图捕获一个 promise 拒绝(基本ngResource
调用返回的承诺):
此代码使用.then(success, fail)
语法:
但是这个.then(success).catch(fail)
语法失败了:
指向该.catch()
行的 IE 错误是:
预期标识符
难道我做错了什么 ?有人重现吗?还是由于关键字受限而成为常见的 IE8?
谢谢
javascript - AngularJS - 承诺重新抛出捕获的异常
在下面的代码中, $q promise的catch函数捕获了一个异常:
但是,当我查看控制台日志输出时,我看到以下内容:
该异常在 Angular 中被捕获,但也被浏览器的错误处理捕获。这种行为确实会在 Q 库中重现。
它是一个错误吗?我如何才能真正用 $q 捕获异常?
angularjs - AngularJS:$q -> 事物的延迟 API 顺序(生命周期)以及谁调用摘要?
$q 服务在 angularjs 中非常强大,使用异步代码让我们的生活更轻松。
我是 Angular 的新手,但使用延迟 API 对我来说并不是很新鲜。我必须说我How to use
对文档的部分完全没问题+文档中有非常有用的链接+我也检查了源代码。
我的问题更多是关于Angular中的 deferred 和 promise API 对象的底层部分。它们生命周期中的确切阶段是什么以及它们如何与(s)交互。我的假设是,当承诺解决时 - 它会调用摘要循环???是/否?rootScope.Scope
是否可以针对以下方面的特定方面提供详细的答案:
- 在您描述的每个步骤/阶段中发生的事情的顺序是什么
- 何时创建具有新承诺实例的新延迟对象 - 谁知道它/它重要吗?
- 当 promise 对象被解析时,范围是如何更新的?我是否必须在回调中手动更新它,否则摘要将被自动调用并更新 rootScope就像在这里声明的一样
- 至少提到一种从 Promise 回调中更新范围的方法
- 我认为还有很多其他有用的方面,请随时提供它们。
我会感谢并接受最详细的答案,并尽可能多地引用文档或源代码(我自己找不到)。我找不到任何与此主题的先前讨论,如果已经存在的话 - 请发布链接。
ps:对于任何可以通过为此问题提出更好的标题来提供帮助的人+1,请在评论中添加您的建议。
干杯!
javascript - 如何使用 $q 从 AngularJS 服务返回已解决的承诺?
我的服务是:
我通过以下方式在我的config
文件中调用它:
但是,它抱怨这then
不是一个功能。我不是在返回已解决的承诺吗?
javascript - 计算 angularjs 中未决的 $q 承诺
我正在开发一个复杂的 angularjs 应用程序。复杂含义单一视图可以从代码的不同位置查询多个不同的数据源,例如页面部分控制器或指令控制器。有时,其中一些请求可能需要更长的时间才能解决,从而使视图处于某种无效状态。我希望能够显示某种“数据加载”横幅并禁用用户与视图的交互,直到所有承诺都得到解决。这适用于使用 $q.all() 函数的简单屏幕。但是,应用程序的构建方式更加以业务逻辑为中心,而不是以数据源为中心。因此,对于更复杂的屏幕,不会有一个地方可以自然地访问所有的承诺。在代码中创建这样一个地方似乎很麻烦。
我想出了这个解决方案:
是否有更少的hacky来实现相同的目标?
javascript - 角度承诺:拦截“然后”
现在我有一个chartModelService
用这个方法命名的 Angular 服务:
我有一个使用这些数据的 Angular 控制器:
我想使用该服务在chartModelService.translate(data)
内部chartModelService
而不是控制器中执行。换句话说,我想将控制器更改为下面的代码,chartData
它接收到的代码已经被翻译:
我该如何更改才能在返回承诺的数据之前chartModelService.fetchChartModel()
执行?translate()
javascript - 有没有一种简单的方法可以返回对 $q.all 的成功调用而无需创建 $q.defer() 变量?
我的应用程序有许多同步和异步(执行 $http 调用)方法。在控制器中,我有这样的代码:
即使我不需要等待 syncMethod1() 我把它放在 $q.all 中以保持简单,并允许我在将来需要时将方法更改为异步。
对于同步功能,我这样称呼它们:
我想知道的是,是否有一种方法可以让同步方法返回 $q.all 数据,但不需要创建延迟变量,然后返回 defer.promise?只是试图使同步方法尽可能简单。
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
原始代码中的值?为什么承诺会保持价值?
angularjs - AngularJS 应用程序在查询期间冻结
我正在运行一个带有 Parse 后端的 Angular 应用程序。当我进行查询时,应用程序会冻结,即使 DOM 不依赖于当时正在抓取的数据。这就是为什么这个答案没有那么有用的原因。有没有办法让应用程序的其余部分在某些请求正在进行时运行?
下面是冻结所有内容直到请求解决的代码。Parse Javascript SDK 带有 Promise,这是 'QS.errorQuery.find()` 返回的内容。