JS是单线程的,异步的意义何在?

时间:2019-06-17 08:56:49

标签: javascript promise

我不理解异步代码有什么好处,因为JS是单线程的,因此它不能同时执行多个功能(有些图形显示执行时间是“堆栈”,但是怎么可能?)

1 个答案:

答案 0 :(得分:0)

它是单线程的原因正是它需要使用异步代码的原因。有些事情可以在“后台”执行;例如通过XMLHttpRequest发出网络请求,实际请求将由引擎在后台处理,而不是占用单个Javascript线程。等待请求完成的代码不需要阻塞线程,它可以让步给其他函数,并在响应返回后异步调用。

您无法用纯Javascript编写这类“背景”内容;发出实际的网络请求对于Javascript来说太底层了,实际的实现是C语言中的某个地方,或者引擎使用的任何东西。诸如此类的几件事“在后台运行”,例如setTimeoutsetInterval等。