在发起一个 IO 操作之后不会阻塞程序的执行, 当 IO 操作完成或数据返回后, 以事件的形式通知发起 IO 操作的程序
在执行一个任务时, 不能立即拿到结果, 需要等待一些操作完成后才能获取结果, 又不想阻塞我们的程序, 因此我们需要一些方法在特定的时机去接收结果, 这个过程就叫做回调; JS 中最常见的就是回调函数
在 js 中只有一个线程在执行程序, 当遇到一些异步操作时就先将其放到一个事件队列中, 当线程中的任务执行完毕后, 会从事件队列中依次取出事件进行执行, 如此循环, 这样的过程就叫做事件循环