问题标签 [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 投票
8 回答
124884 浏览

angularjs - 如何在 AngularJS 中取消 $http 请求?

给定 AngularJS 中的 Ajax 请求

如果启动另一个请求(例如相同的后端,不同的参数),取消该请求的最有效方法是什么。

0 投票
3 回答
24317 浏览

angularjs - AngularJS 承诺

AngularJS 文档

$q promises 被 Angular 模板引擎识别,这意味着在模板中,您可以将附加到范围的 Promise 视为结果值。

那么有人可以解释一下这个小提琴不起作用的原因吗?无法更改文本字段值。但是,将 $http 服务返回到范围字段的承诺分配起来就像一个魅力。

控制器:

html:

0 投票
10 回答
219016 浏览

javascript - AngularJS : Initialize service with asynchronous data

I have an AngularJS service that I want to initialize with some asynchronous data. Something like this:

Obviously this won't work because if something tries to call doStuff() before myData gets back I will get a null pointer exception. As far as I can tell from reading some of the other questions asked here and here I have a few options, but none of them seem very clean (perhaps I am missing something):

Setup Service with "run"

When setting up my app do this:

Then my service would look like this:

This works some of the time but if the asynchronous data happens to take longer than it takes for everything to get initialized I get a null pointer exception when I call doStuff()

Use promise objects

This would probably work. The only downside it everywhere I call MyService I will have to know that doStuff() returns a promise and all the code will have to us then to interact with the promise. I would rather just wait until myData is back before loading the my application.

Manual Bootstrap

Global Javascript Var I could send my JSON directly to a global Javascript variable:

HTML:

data.js:

Then it would be available when initializing MyService:

This would work too, but then I have a global javascript variable which smells bad.

Are these my only options? Are one of these options better than the others? I know this is a pretty long question, but I wanted to show that I have tried to explore all my options. Any guidance would greatly be appreciated.

0 投票
6 回答
113668 浏览

javascript - AngularJS http 中的错误处理然后构造

在使用 AngularJS “http get then” 构造(承诺)时,如何处理 HTTP 错误,例如 500?

问题是,对于任何非 200 HTTP 响应,都不会调用内部函数。

0 投票
2 回答
3840 浏览

javascript - 将已解决的承诺注入服务

在我设置一堆依赖于该信息的服务之前,我需要从服务器获取一些信息(模式)。

我的服务器提供了一个模式来定义模型的各种属性。在我的角度代码中,我有一项服务可以获取此架构:

我想将模式对象而不是承诺注入到依赖于模式的其他服务中。$routeProvider 允许我们为控制器执行此操作:

这让我可以像这样定义 SomeCtrl:

但对于服务,我必须这样做:

有什么办法可以做到这一点吗?

0 投票
1 回答
7085 浏览

angularjs - angular $http / jquery 完全等效

有没有办法用角度 $http 模块模拟 jquery '完成' 回调?无论请求成功还是失败,我都有一些我想执行的代码,目前我发现自己不得不写这个:

但我宁愿写这样的东西:

我也尝试过使用 promise API,但我最终遇到了同样的问题。有什么建议吗?

0 投票
2 回答
6836 浏览

javascript - 使用 Angular 的 $q.when() 解决延迟问题

我想用来$q.when()包装一些非承诺回调。但是,我不知道如何从回调中解决承诺。我在匿名函数中做什么来强制$q.when()解决我的原因?


我要复制的功能是这样的:

这很好,但when()看起来很好。我只是无法将解决消息传递给then().


更新

有更好、更强大的方法来做到这一点。$q同步抛出异常,正如@Benjamin 指出的那样,主要的 Promise 库正朝着使用完整 Promises 代替 Deferreds 的方向发展。

也就是说,这个问题正在寻找一种使用$q'swhen()函数的方法。当然欢迎客观上优越的技术,但不要回答这个具体问题。

0 投票
3 回答
12319 浏览

javascript - 在 AngularJS 服务中缓存一个承诺对象

我想使用 Promises 在 AngularJS 中实现静态资源的动态加载。问题:我在页面上有几个组件可能(或不,取决于显示的,因此是动态的)需要从服务器获取静态资源。一旦加载,它可以在整个应用程序生命周期内被缓存。

我已经实现了这个机制,但我对 Angular 和 Promises 还是陌生的,我想确定这是否是一个正确的解决方案\方法。

因此,只发出了一个请求,接下来对 loadDataPromise() 的所有调用都会取回第一个做出的承诺。它似乎适用于正在进行的请求或前一段时间已经完成的请求。

但它是缓存 Promises 的好方法吗?

0 投票
7 回答
46650 浏览

javascript - 当一些调用有效而另一些调用失败时,$q.all() 会发生什么?

当一些调用有效而另一些调用失败时,$q.all() 会发生什么?

我有以下代码:

当所有的 $http 调用都工作时,allResponses 数组就会被数据填充。

当一个失败时,我的理解是将调用第二个函数并给出错误变量的详细信息。

但是,如果某些响应有效而其他响应失败,有人可以帮我解释一下会发生什么吗?

0 投票
1 回答
25674 浏览

javascript - 从未解决的承诺会导致内存泄漏吗?

我有一个Promise. 如果需要,我创建它是为了取消 AJAX 请求。但是由于我不需要取消那个 AJAX,所以我从来没有解决它并且 AJAX 成功完成。

一个简化的片段:

从来没有解决过这样的承诺会导致内存泄漏吗?您对如何管理Promise生命周期有什么建议吗?