利用Promise判断请求图片超时,Promise.race

文章介绍了如何利用Promise的race方法来并行执行异步操作,特别是如何为图片请求设置超时。当请求Img和timeout两个Promise中任何一个先完成时,会触发then或catch。如果图片在5秒内未加载,则会捕获到图片请求超时的错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Promise的all方法race方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。
all方法的效果:「谁跑的慢,以谁为准执行回调」
race方法的效果: 「谁跑的快,以谁为准执行回调」
用race给某个异步请求设置超时时间,并且在超时后执行相应的操作:

//请求某个图片资源
function requestImg(){
    var p = new Promise(function(resolve, reject){
        var img = new Image();
        img.onload = function(){
            resolve(img);
        }
        img.src = 'xxxxxx';
    });
    return p;
}

//延时函数,用于给请求计时
function timeout(){
    var p = new Promise(function(resolve, reject){
        setTimeout(function(){
            reject('图片请求超时');
        }, 5000);
    });
    return p;
}

Promise
.race([requestImg(), timeout()])
.then(function(results){
    console.log(results);
})
.catch(function(reason){
    console.log(reason);
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值