当前位置:   article > 正文

vue-resource请求超时timeout设置_vue-resource 设置过期时间

vue-resource 设置过期时间

vue-resource请求超时timeout设置

请求超时设置通过拦截器Vue.http.interceptors实现具体代码如下

main.js里在全局拦截器中添加请求超时的方法

方法1:超时之后会调用请求中的onTimeoutd方法,then方法不会执行

  1. Vue.http.interceptors.push((request, next) => {
  2. let timeout;
  3. // 如果某个请求设置了_timeout,那么超过该时间,会终端该(abort)请求,并执行请求设置的钩子函数onTimeout方法,不会执行then方法。
  4. if (request._timeout) {
  5. timeout = setTimeout(() => {
  6. if(request.onTimeout) {
  7. request.onTimeout(request);
  8. request.abort()
  9. }
  10. }, request._timeout);
  11. }
  12. next((response) => {
  13. clearTimeout(timeout);
  14.     return response;
  15. })
  16. })

页面中用到vue-resource请求的地方如下设置即可。

  1. this.$http.get('url',{
  2. params:{.......},
  3.        ......
  4. _timeout:3000,
  5. onTimeout: (request) => {
  6. alert("请求超时");
  7. }
  8. }).then((response)=>{
  9. });

 方法2:超时之后可以在then的第二个error方法中获取,私以为这个方法更好一些

main.js中设置如下

  1. Vue.http.interceptors.push((request, next) => {
  2. let timeout;
  3. // 這裡改用 _timeout
  4. if (request._timeout) {
  5. timeout = setTimeout(() => {
  6.         //自定义响应体 status:408,statustext:"请求超时",并返回给下下边的next
  7. next(request.respondWith(request.body, {
  8. status: 408,
  9. statusText: '请求超时'
  10. }));
  11. }, request._timeout);
  12. }
  13. next((response) => {
  14.     console.log(response.status)//如果超时输出408
  15.     return response;
  16. })
  17. })
页面请求设置
  1. this.$http.get(`repairs/${this.repairs_id}`,{
  2. params:{with:'room;user'},
  3. _timeout:100,//设置超时时间
  4. }).then((response)=>{
  5. },(err)=>{
  6. console.log(err.status);//如果超时,此处输出408
  7. });
  1. /**
  2. * ,%%%%%%%%,
  3. * ,%%/\%%%%/\%%
  4. * ,%%%\c "" J/%%%
  5. * %. %%%%/ o o \%%%
  6. * `%%. %%%% _ |%%%
  7. * `%% `%%%%(__Y__)%%'
  8. * // ;%%%%`\-/%%%'
  9. * (( / `%%%%%%%'
  10. * \\ .' |
  11. * \\ / \ | |
  12. * \\/ ) | |
  13. * \ /_ | |__
  14. * (___________))))))) 攻城湿
  15. *
  16. * _ _
  17. * __ _(_)_ _(_) __ _ _ __
  18. * \ \ / / \ \ / / |/ _` |'_ \
  19. * \ V /| |\ V /| | (_| | | | |
  20. * \_/ |_| \_/ |_|\__,_|_| |_|
  21. */

参考文章  https://segmentfault.com/q/1010000005800495/a-1020000005802004

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/610917
推荐阅读
相关标签
  

闽ICP备14008679号