如何在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
相关产品推荐
相关产品推荐

