## 手撕:sleep,Promise.all,红绿灯JavaScript 是单线程的,这意味着它一次只能执行一个任务。然而,在处理耗时操作(如网络请求、定时器)时,我们不能让程序停下来等待。因此,异步编程应运而生。本文将带你回顾 JavaScript 异步编程的几个重要阶段,并探讨它们的优缺点,帮你构建一个清晰、系统的知识框架。1. 回调函数:异步编程的起点最早期的异步编程主要依赖回调函数(Callback)。当一个异步操作完成后,它会调用你提供的回调函数来处理结果。 // 示例:使用回调函数实现异步 function red() { setTimeout(() => { consol...