"重新发送“;Angular$http请求
"Resend" an Angular $http request
我在这样一个有角度的应用程序中有一个$http承诺:
this.data = $http.get('/api/foo', {})
然后,我的应用程序的其他部分将成功和错误处理程序添加到这个承诺中。
我的问题是,我想刷新this.data
变量中的信息,然后重新运行promise的所有附加处理程序。这可以用某种this.data.$refresh()
方法来完成吗?还是我必须将所有处理程序存储在其他地方,并将它们重新附加到新的$http.get?
编辑:也许有一个稍微清晰的例子:
this.data = $http.get('/api/foo', {})
this.data.success(doSomething)
// doSomething() runs because the response arrives.
this.data.someMagic()
// doSomething() runs again without being reattached.
我想避免的是:
this.data = $http.get('/api/foo', {})
this.data.success(doSomething)
// Time passes...
this.data = $http.get('/api/foo', {}) // All old handlers have now been thrown away.
this.data.success(doSomething)
这是因为成功和错误都有几个处理程序,而且它们是由不同的控制器和服务添加的,所以每次更新变量时,都需要一些混乱的回调系统来让它们重新附加处理程序。
重新运行promise的所有附加处理程序。
不,那是不可能的。根据约定,promise只解析和执行其处理程序一次。
我是否必须将所有处理程序存储在其他地方,并将它们重新附加到新的$http.get?
是的,这是一个可能的解决方案,尽管它失去了承诺的所有美好属性,如可链接性。您还可以简单地放置一个EventEmitter并实现某种pub-sub(例如,请参见Angularjs pub-sub与$broadcast)。
如果你想拥有一个包含各种好东西的真实流接口,你可能想研究FRP,例如Bacon.js和angular Bacon。
相关文章:
- 如何使用(this)访问Angular 2 http rxjs catch函数中的对象属性
- Angular js http get返回所有页面
- http/rxjs catch回调中的Angular 2重定向导致TypeError:无法读取属性'订阅'
- Angular.js-$http.get-使用文件中的缓存
- Angular http.get没有'我不喜欢在开头和结尾加方括号的文本文件
- Http服务工厂将未定义的返回到Angular中的控制器
- Angular中的过滤和$http承诺
- $http中的Angular 1数据绑定承诺不起作用
- Angular JS `$http`发送POST而不是GET
- 不适用于动态数据的Angular指令来自$http
- 我可以在React应用程序中使用什么作为Angular的等价物;s$http.get
- Angular Provider/JS-如何访问'叔叔方法'从$http().then()
- 使用angular$http和django-urlpatters来获得json文件
- 调用$http以响应另一个HTTP - Angular JS
- 美元http.angular方法中的Get方法没有按预期工作
- 美元http.angular应用中的json调用会返回错误
- 获取响应http angular
- 可观察对象类型有两个http.Angular 2中的get调用
- XMLHttpRequest无法加载文件.跨域请求仅支持HTTP.angular.js
- 传递数组不会被$http Angular service修改