我找到了一些使用fullRequestInterceptor
和httpConfig.timeout
来允许以restangular取消请求的示例。
这就是我添加拦截器的方式:
app.run(function (Restangular, $q) {
Restangular.addFullRequestInterceptor(function (element, operation, what, url, headers, params, httpConfig) {
我设法通过在超时中放置已解决的承诺来中止请求(导致记录错误并且请求被取消但被取消),这不是我想要的。
我尝试做什么 - 我想用自己的请求自己制作AJAX请求,并将结果传回给使用Restangular的任何组件。这可能吗?
答案 0 :(得分:2)
我一直在寻找一种解决它的方法,但我本来应该寻找一种有棱角的方式:)
Overriding dependency at runtime in AngularJS
看起来你可以在它到达Restangular之前扩展$http
。我还没有尝试过,但看起来它可以100%满足我的需求。
答案 1 :(得分:0)
我正在使用requestInterceptor,但只更改了我的请求的参数和标题。
基本上,addFullRequestInterceptor可以帮助您在发送请求之前对其进行更改。那么为什么不改变你想要打电话的网址呢?
您可以修改并返回httpConfig对象,如果它接近$http的配置(我敢打赌),您可以更改url和even方法,从而更改原始请求到另一个,完全知道。
之后,您不需要超时,只需根据需要返回httpConfig自定义。
RestangularConfigurer.addFullRequestInterceptor(function (element, operation, route, url, headers, params, httpConfig) {
httpConfig.url = "http://google.com";
httpConfig.method = "GET";
httpConfig.params = "";
return {
httpConfig: httpConfig
};
});
它将被传递,你的服务或控制器将不会知道某些东西发生变化,这是拦截器的原理,它允许你改变东西并返回到下一个进程有点像中间件使用。因此,对于拨打电话的人来说,它是透明的,但是会调用你想要的电话。