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