最近,我正在学习javaScript中的异步函数。
我现在知道什么是回调,同步和异步之间的区别以及回调地狱反模式。
但是,我仍然有一个问题让我对已经学到的东西总是感到不舒服:
JavaScript解释器如何知道遇到的函数调用应该被同步还是异步处理?例如,如果javascript解释器遇到...
setTimeout(callback,5000) //Assming that callback is a callback function
...它完成运行此功能(在主堆栈为空之后,在其自己的新堆栈中)。但是,当遇到...
function myFunction(callback) { callback(); }
...它同步地对待它。
javascript解释器是否具有应异步处理的功能列表?
如果不是,那么如何知道应该同步还是异步对待遇到的函数呢?
对不起,如果我在英语语法上有任何错误,请先感谢您照常为我提供帮助。
你是对的。JavaScript解释器确实知道异步功能,它们setTimeout
是其中之一。异步行为由基础运行时代码处理。
而且,如果不使用内置异步函数之一,就无法创建自己的异步函数。异步性来自解释器,该解释器又来自底层OS公开的异步I / O接口(或线程,如果只有阻塞I / O,则为线程)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句