• vue-resource请求超时timeout设置


    转载:https://www.cnblogs.com/dupd/p/6114395.html

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

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

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

    Vue.http.interceptors.push((request, next) => {
        let timeout;
        // 如果某个请求设置了_timeout,那么超过该时间,会终端该(abort)请求,并执行请求设置的钩子函数onTimeout方法,不会执行then方法。
        if (request._timeout) {
            timeout = setTimeout(() => {
                if(request.onTimeout) {
                    request.onTimeout(request);
                    request.abort()
                }  
            }, request._timeout);
        }
        next((response) => {
           clearTimeout(timeout);
        return response;
        })
    })

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

    this.$http.get('url',{
                params:{.......},
           ......
               _timeout:3000,
               onTimeout: (request) => {
                   alert("请求超时");
               }
         }).then((response)=>{
                   
    });

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

    main.js中设置如下

    Vue.http.interceptors.push((request, next) => {
        let timeout;
        // 這裡改用 _timeout
        if (request._timeout) {
            timeout = setTimeout(() => {
            //自定义响应体 status:408,statustext:"请求超时",并返回给下下边的next
                next(request.respondWith(request.body, {
                     status: 408,
                     statusText: '请求超时'
                }));
                
            }, request._timeout);
        }
        next((response) => {
        console.log(response.status)//如果超时输出408
        return response;
        })
    })

    页面请求设置

    this.$http.get(`repairs/${this.repairs_id}`,{
                    params:{with:'room;user'},
                    _timeout:100,//设置超时时间
                }).then((response)=>{
                },(err)=>{
                    console.log(err.status);//如果超时,此处输出408
    });
  • 相关阅读:
    js 构造函数 constructor
    js foreach和map区别
    js 静态方法和实例方法
    学习知识点总结(es6篇)
    java1.5新特性(转)
    21 Managing the Activity Lifecycle
    Java进阶Collection集合框架概要·16
    Java进阶核心之集合框架Map下集·18
    Java进阶核心之集合框架Set·19
    Java进阶核心之集合框架List·17
  • 原文地址:https://www.cnblogs.com/lst619247/p/10265452.html
Copyright © 2020-2023  润新知