异步/同步:如何确保Javascript函数在for循环之后执行?

异步/同步:如何确保Javascript函数在for循环之后执行?,javascript,asynchronous,synchronous,Javascript,Asynchronous,Synchronous,例如,我有以下代码: var smth=''; 对于(变量i=0;i

例如,我有以下代码:

var smth='';
对于(变量i=0;i<10;i++){
//我从别处调用的一些长函数
对于(var k=0;k<10000;k++){
smth+=k+'';
}
smth+=i;
}

控制台日志(smth)Javascript同步执行代码,即一次执行一行代码。这意味着console.log语句将在for循环完成执行后执行。

Javascript同步执行代码,即一次执行一行。这意味着console.log语句将在for循环完成执行后执行。

for循环
是阻塞任务,因此在这种情况下,您的
console.log()
将始终在for循环后执行。

for循环
是阻塞任务,因此,在本例中,您的
console.log()
将始终在for循环之后执行

我能否确保console.log将始终在for循环处理完我的smth参数后执行

对。没有什么是异步的

那么所有的异步/同步执行呢

这里没有任何异步代码

如何重写代码,使console.log与for循环同时执行

您需要使代码无阻塞。核心JavaScript中对此没有任何内容。某些主机环境提供了一种通过辅助线程的形式

  • 对于浏览器
  • 对于Node.js
我能否确保console.log将始终在for循环处理完我的smth参数后执行

对。没有什么是异步的

那么所有的异步/同步执行呢

这里没有任何异步代码

如何重写代码,使console.log与for循环同时执行

您需要使代码无阻塞。核心JavaScript中对此没有任何内容。某些主机环境提供了一种通过辅助线程的形式

  • 对于浏览器
  • 对于Node.js

这可能有助于您提供有关此“长函数”功能的更多详细信息?这可能有助于您提供有关此“长函数”功能的更多详细信息?以及
foreach
?他们也封锁了吗?任何循环都是非阻塞的吗?Javascript是一个单线程环境,只有异步函数是……非常异步的,
foreach
?他们也封锁了吗?任何循环都是非阻塞的吗?Javascript是一个单线程环境,只有异步函数是……非常异步的