You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何等待函数最多1000ms后执行下一个函数(不终止原请求)

实现带超时触发的异步函数执行逻辑

你要的需求可以通过Promise.race()来实现,它会等待传入的Promise数组中第一个完成的实例,刚好适配你的场景:

  1. 先定义一个简单的sleep函数,用来生成指定时长的Promise:
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
  1. 用Promise.race()同时监听func1()和1000ms的sleep,不管哪个先完成,立刻执行func2(),同时func1()会继续执行不会被中断:
// 启动func1,让它在后台执行,无需提前await
const func1Promise = func1();
// 等待func1完成或1000ms超时,任一条件满足就继续
await Promise.race([func1Promise, sleep(1000)]);
// 执行func2
await func2();

这个方案的逻辑完全匹配你的需求:

  • 若func1()在1000ms内返回,Promise.race()会立刻结束,马上触发func2()执行
  • 若func1()超时未完成,sleep的Promise会先resolve,同样触发func2(),而func1()会在后台继续完成自身逻辑,不会被取消

内容的提问来源于stack exchange,提问作者Pradip Shrestha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 02:25:38