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

如何在JavaScript中创建异步任务 实现两个延时任务并行异步执行

JavaScript 异步并发任务实现方案

实现说明

要实现你描述的效果需要使用Promise,JavaScript 中的异步操作、async/await 语法本质都是基于 Promise 封装的,整体逻辑和你熟悉的 Python asyncio 高度对齐,新手很容易上手。

完整代码示例

// 对应Python示例中的say_after函数:延迟指定秒数后打印内容
function sayAfter(delaySeconds, text) {
  // 返回Promise实例,标记异步操作的状态
  return new Promise((resolve) => {
    setTimeout(() => {
      console.log(text);
      // 异步操作完成,修改Promise状态为成功
      resolve();
    }, delaySeconds * 1000); // setTimeout单位是毫秒,所以要乘以1000转成秒
  });
}
async function main() {
  console.log(`started at ${new Date().toLocaleTimeString()}`);
  // 调用异步函数就会直接启动任务,不需要额外的创建方法,两个任务此时已经同时运行
  const task1 = sayAfter(1, 'foo');
  const task2 = sayAfter(2, 'bar');
  // 等待两个任务全部执行完成,总耗时约2秒
  await task1;
  await task2;
  console.log(`finished at ${new Date().toLocaleTimeString()}`);
}
// 执行主函数
main();

简化写法

你也可以用Promise.all一次性等待多个异步任务完成,代码更简洁,效果完全一致:

async function main() {
  console.log(`started at ${new Date().toLocaleTimeString()}`);
  await Promise.all([
    sayAfter(1, 'foo'),
    sayAfter(2, 'bar')
  ]);
  console.log(`finished at ${new Date().toLocaleTimeString()}`);
}

内容的提问来源于stack exchange,提问作者Michał Szostak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:06:03