如何用vue-resource设置timeout回调

发布网友 发布时间:2022-03-26 15:59

我来回答

1个回答

热心网友 时间:2022-03-26 17:29

VueResource 其实还是有一些 bug ,有空再写个 PR ...

研究了下源码,可以透过一些方式实现你要的结果,首先是设置 timeout ,会触发 timeout interceptor

这是原本的 timeout interceptor

export default function (request, next) {

var timeout;

// 有设置值就启动一个定时器
if (request.timeout) {
timeout = setTimeout(() => {
// 这里有问题,作者写了一个 request.abort() , 这里却用 cancel() 囧
// 所以在 timeout 触发时就会出问题
// 就算是 abort ,也只会 request 被取消掉,不会有任何返回
// 就像你看到的 status statusText 都是空的
request.cancel();
}, request.timeout);
}

next((response) => {

clearTimeout(timeout);

});
}

在不修改源码的前提下,我们要绕过原本的 timeout interceptor ,自己实现一个 timeout interceptor 的流程 ,所幸是作者提供了增加自定义 interceptor 的方法,下面是我的实现方式,有两种,可以改成其他符合你需求的
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com