请问一下,如果有这么个需求,发送一个请求,5s内请求返回结果就跳转A,否则跳转B,这个如何实现呢

请问一下,如果有这么个需求,发送一个请求,5s内请求返回结果就跳转A,否则跳转B,这个如何实现呢

阅读 2.2k
2 个回答
Promise.race([
    new Promise((resolve) => setTimeout(() => resolve('timeout'), 5000)),
    new Promise((resolve) => setTimeout(() => resolve('done'), 10000)), // 模拟一个异步请求,10 秒后返回结果
]).then((res) => {
    if (res !== 'timeout') {
        // Do A
    } else {
        // Do B
    }
});

除了使用Promise.race还可以在请求前设一个5s的定时器,5s内完成就清除定时器

let isFinish = false; //判断是否在5s内完成
const time  = setTimeout(function(){ 
    isFinish = true;
    //执行跳转B 
},5000);
axios('/xxxxxx') //请求
.then(function(){
    if(!isFinish){
        clearTimeout(time)
        //执行跳转A
    }
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题