首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript执行顺序-运行this(),然后在this()结束时运行that()?

JavaScript执行顺序-运行this(),然后在this()结束时运行that()?
EN

Stack Overflow用户
提问于 2010-08-03 18:12:58
回答 3查看 901关注 0票数 2

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

代码语言:javascript
复制
$("div").fadeIn('fast');
$("div").html('Foo');

这将在div中淡入,并将其html设置为"Foo“,同时它仍在淡入,而:

代码语言:javascript
复制
$("div").fadeIn('fast',function(){
   $("div").html('Foo');
});

只有在div完成淡入之后,才会将html设置为"Foo“。

这类事情通常是JavaScript的工作方式吗?所以如果我有:

代码语言:javascript
复制
//do something
var i = 42;
var foo = i/1;
//do something else
var bar = fooBar();

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-03 18:15:25

JavaScript通常不是这样工作的,你可以看到jQuery动画和回调的结果。当你通过setInterval()运行一些东西时,它发生在当前线程之外,稍后才开始(.fadeIn()是一个动画,they're on interval timers)。

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

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

票数 3
EN

Stack Overflow用户

发布于 2010-08-03 18:14:32

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

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

票数 1
EN

Stack Overflow用户

发布于 2010-08-03 18:16:35

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3395514

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档