博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fetch添加超时时间
阅读量:6193 次
发布时间:2019-06-21

本文共 774 字,大约阅读时间需要 2 分钟。

fetch添加超时时间

其实为fetch添加超时时间很简单,需要用到Promise.race()方法.

Promise.race() 方法将多个Promise包装成一个新的Promise实例.

var p = Promise.race([p1,p2,p3]);

上面的代码中,只要p1,p2,p3中有一个实例先改变状态,p的状态就跟着改变,而那个率先改变的Promise实例返回值就传递给p的回调函数.

Promise.race方法的参数如果不是Promise实例,就会先先调用Promise.resolve方法,将参数转为Promise实例,再进一步处理.

上完整实例代码:

Promise.race([    fetch(URL),    new Promise(function(resolve,reject){        setTimeout(()=> reject(new Error('request timeout')),2000)    })])    .then((data)=>{        //请求成功    }).catch(()=>{        //请求失败});

代码中用Promise.race()将fetch和一个新的Promise包装在了一起,新的Promisefetch谁率先返回就把该Promise实例返回值传递给下面的.then()或者是.catch()

代码里我们新建的Promise实例里设置了超时时间2000毫秒,如果超过2000毫秒fetch的请求还没有结束,这时已经达到了新的Promise的超时时间,就会返回请求失败,从而触发catch方法里指定的回调函数.

原博客地址:

作者:

转载于:https://www.cnblogs.com/YooHoeh/p/9107062.html

你可能感兴趣的文章
Squid代理服务
查看>>
第3章 抽象类
查看>>
[PHP]加密解密函数
查看>>
解析私有云服务器给企业带来的六大优势
查看>>
iptables1
查看>>
之所以一无所成,并不是我们不够努力
查看>>
如何对高管实施股权激励?
查看>>
centos搭建FTP文件服务
查看>>
华山模拟器安装
查看>>
Mysql实现企业级主从复制和互为主从模式架构
查看>>
电脑维修常见软件工具
查看>>
使用SSL证书保障网络游戏信息安全
查看>>
oracle db_link
查看>>
CentOS7.2编译安装LNMP
查看>>
Nginx负载平衡 + Tomcat + 会话存储Redis配置要点
查看>>
Scala学习 - 基础类型
查看>>
前端代码中经常遇到的问题
查看>>
我的友情链接
查看>>
MariaDB10.3 系统版本表 有效防止数据丢失
查看>>
常用命令分析局域网连通故障
查看>>