异步函数一定是开子线程来实现吗?

异步函数一定是开子线程来实现吗?
我们知道js中有setTimeout()方法,js又是单线程的语言,不是通过子线程方式来实现异步的吧?是怎么实现异步的呢?

阅读 1.7k
2 个回答
  1. 浏览器里是单线程,setTimeoutsetInterval,包括时间循环都依赖 Event Loop 机制
  2. 异步函数不一定是子线程,可能要依赖非 JS 资源来完成,所以异步,比如 ajax、硬盘操作
  3. node.js 里可以开子线程,很常用。
js又是单线程的语言

js 并不是只有一个线程的。这是程序员只能用到一个线程。异步的工作是在单独的线程里完成的。


比如 node.js

Node.js has two types of threads: one Event Loop and k Workers. The Event Loop is responsible for JavaScript callbacks and non-blocking I/O, and a Worker executes tasks corresponding to C++ code that completes an asynchronous request, including blocking I/O and CPU-intensive work.
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题