盘口构建源码时Asuka系统JavaScript如何在微博后台运行盘口构建源码时Asuka系统JavaScript在微博后台如何运行?也就是说,在构建小鸟系统的源代码和运行JavaScript代码租用之前,你有没有想过它在后台是如何工作的?【TGTelegramduotebb】版权所有,转载必须注明出处!单线程:这意味着一次只能发生一件事非阻塞:假设您正在运行一个函数,该函数在该任务期间需要30秒,而我们正在等待30秒才能发生其他事情!当然,这不会发生,这意味着它不会等待异步代码的响应。为了更好地理解异步JavaScript,让我们看一下以下代码:console.log("Hello1");setTimeout(function(){console.log("再见!");},3000);console.log("你好2");跟我一起想想最后的结果吧。。代码结果上面的代码怎么了?JavaScript逐行运行,但它是一种非阻塞语言,所以它运行准备好的函数,而该函数需要稍后执行,所以对于异步JavaScript,JavaScript在执行函数时不会等待响应,所以它会先执行执行“Hello1”,然后是“Hello2”,3秒后执行“Bye!”JavaScript执行实际的JavaScript执行非常简单,但它与您首先需要了解的四个概念相关。CallStackNetworkAPICallbackQueueEventLoopCallStack:JavaScript只有一个调用栈,调用栈是JS引擎的一部分。当我们运行代码并调用一个函数时,它会被添加到调用堆栈中。如果此函数是异步的(超时(setTimeOut),Ajax请求,..),它将移至WebAPI。这意味着在WebAPI中一次只能执行一件事:这是一个异步函数存在的地方,直到它完成执行,之后它只是简单地添加到回调队列:JS提供),它不会立即将代码传输到被执行回JavaScript。浏览器完成后,会将代码存储在回调队列中。它是一个队列,包含一些函数或代码,稍后将被回调。事件循环:有一个简单的工作,检查主堆栈是否为空,当它为空时检查回调队列。如果队列中有待处理的代码,则将它们一个一个地转移到调用堆栈。代码执行完后出栈,队列中的下一个上来,直到队列为空。上面的gif解释了这个想法。我们可以看到第一个函数被压入调用栈,并立即在控制台执行Hi。然后将async函数(setTimeOut)从调用栈转入webapi,直到执行完毕再移入回调队列,当调用栈为空时,事件循环将async函数转入栈执行。结论我们了解了谁在后台执行同步和异步代码,我们知道调用堆栈、WebAPI、回调队列和事件循环的含义。
