JavaScript执行顺序-运行this(),然后在this()完成时运行this()?

JavaScript执行顺序-运行this(),然后在this()完成时运行this()?,javascript,jquery,Javascript,Jquery,例如,我让一些jQuery做一些简单的事情,比如: $("div").fadeIn('fast'); $("div").html('Foo'); 这将在div中淡出,并将其html设置为“Foo”,同时仍在淡入,而: $("div").fadeIn('fast',function(){ $("div").html('Foo'); }); 只有在div完成淡入后,才会将html设置为“Foo” 这是JavaScript通常的工作方式吗?如果我有: //do something var i

例如,我让一些jQuery做一些简单的事情,比如:

$("div").fadeIn('fast');
$("div").html('Foo');
这将在div中淡出,并将其html设置为“Foo”,同时仍在淡入,而:

$("div").fadeIn('fast',function(){
   $("div").html('Foo');
});
只有在div完成淡入后,才会将html设置为“Foo”

这是JavaScript通常的工作方式吗?如果我有:

//do something
var i = 42;
var foo = i/1;
//do something else
var bar = fooBar();

它会在做其他事情的同时开始做其他事情,还是耐心地等待完成某件事情,然后再做其他事情?

Javascript在浏览器中的一个线程中运行,因此事情将按顺序依次运行。如果发生任何事情,超时和回调将等待,并将运行到完成


唯一的例外是,它们不应该影响UI。

JavaScript通常不会这样工作,您可以看到jQuery动画和回调的结果。当您通过运行某个对象时,它发生在当前线程之外,稍后再启动(是一个动画,)

因此,您传递给(或任何函数)的第二个函数是回调,它在完成后执行。不过,在间隔和计时器之外,脚本将按顺序出现


即使有时间间隔和计时器,它也是按顺序发生的,而不是按代码中出现的顺序,按时间顺序发生事情(如果它们按时完成并且主线程没有等待,即使它们是按顺序发生的,如果没有按时的话)。

JavaScript是单线程的,它一次只能按顺序做一件事。 回调模式在被调用时只是将一个函数粘贴在正在运行的脚本后面。
当您开始使用观察者模式(eventListeners)时,它会变得更加复杂。

@Sarfraz我不知道如何确认该行为。即使使用某种控制台日志,它仍然会按顺序记录。