问题标签 [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.
angularjs - 如何在 AngularJS 中取消 $http 请求?
给定 AngularJS 中的 Ajax 请求
如果启动另一个请求(例如相同的后端,不同的参数),取消该请求的最有效方法是什么。
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.
javascript - AngularJS http 中的错误处理然后构造
在使用 AngularJS “http get then” 构造(承诺)时,如何处理 HTTP 错误,例如 500?
问题是,对于任何非 200 HTTP 响应,都不会调用内部函数。
javascript - 将已解决的承诺注入服务
在我设置一堆依赖于该信息的服务之前,我需要从服务器获取一些信息(模式)。
我的服务器提供了一个模式来定义模型的各种属性。在我的角度代码中,我有一项服务可以获取此架构:
我想将模式对象而不是承诺注入到依赖于模式的其他服务中。$routeProvider 允许我们为控制器执行此操作:
这让我可以像这样定义 SomeCtrl:
但对于服务,我必须这样做:
有什么办法可以做到这一点吗?
angularjs - angular $http / jquery 完全等效
有没有办法用角度 $http 模块模拟 jquery '完成' 回调?无论请求成功还是失败,我都有一些我想执行的代码,目前我发现自己不得不写这个:
但我宁愿写这样的东西:
我也尝试过使用 promise API,但我最终遇到了同样的问题。有什么建议吗?
javascript - 使用 Angular 的 $q.when() 解决延迟问题
我想用来$q.when()
包装一些非承诺回调。但是,我不知道如何从回调中解决承诺。我在匿名函数中做什么来强制$q.when()
解决我的原因?
我要复制的功能是这样的:
这很好,但when()
看起来很好。我只是无法将解决消息传递给then()
.
更新
有更好、更强大的方法来做到这一点。$q
同步抛出异常,正如@Benjamin 指出的那样,主要的 Promise 库正朝着使用完整 Promises 代替 Deferreds 的方向发展。
也就是说,这个问题正在寻找一种使用$q
'swhen()
函数的方法。当然欢迎客观上优越的技术,但不要回答这个具体问题。
javascript - 在 AngularJS 服务中缓存一个承诺对象
我想使用 Promises 在 AngularJS 中实现静态资源的动态加载。问题:我在页面上有几个组件可能(或不,取决于显示的,因此是动态的)需要从服务器获取静态资源。一旦加载,它可以在整个应用程序生命周期内被缓存。
我已经实现了这个机制,但我对 Angular 和 Promises 还是陌生的,我想确定这是否是一个正确的解决方案\方法。
因此,只发出了一个请求,接下来对 loadDataPromise() 的所有调用都会取回第一个做出的承诺。它似乎适用于正在进行的请求或前一段时间已经完成的请求。
但它是缓存 Promises 的好方法吗?
javascript - 当一些调用有效而另一些调用失败时,$q.all() 会发生什么?
当一些调用有效而另一些调用失败时,$q.all() 会发生什么?
我有以下代码:
当所有的 $http 调用都工作时,allResponses 数组就会被数据填充。
当一个失败时,我的理解是将调用第二个函数并给出错误变量的详细信息。
但是,如果某些响应有效而其他响应失败,有人可以帮我解释一下会发生什么吗?
javascript - 从未解决的承诺会导致内存泄漏吗?
我有一个Promise
. 如果需要,我创建它是为了取消 AJAX 请求。但是由于我不需要取消那个 AJAX,所以我从来没有解决它并且 AJAX 成功完成。
一个简化的片段:
从来没有解决过这样的承诺会导致内存泄漏吗?您对如何管理Promise
生命周期有什么建议吗?