我有以下JS代码:
<script>
first();
second();
</script>
我想确保在second()
完成执行后first()
将会运行。这是预期的默认行为吗?
答案 0 :(得分:5)
这取决于first()
和second()
函数中的内容..如果您有异步调用,first()
可能会在second()
之后结束。
例如
function first(){
console.log("I'm first");
}
function second(){
console.log("I'm second");
}
first();
second();
将打印
我是第一次
我是第二次
现在假设你的first()
函数中有一个ajax调用需要10秒才能结束:
function first(){
$.ajax({
//--- blah blah
success: function(){
//--- success runs after 10 seconds
console.log("I'm first");
}
})
}
如果你跑
first();
second();
你将打印
我是第二次
我是第一次
Here你可以找到另一个例子
答案 1 :(得分:1)
是的,这是预期的行为。您还可以定义一些异步函数,如AJAX调用。您还可以定义与异步调用类似的行为,检查此链接
http://krasimirtsonev.com/blog/article/7-lines-JavaScript-library-for-calling-asynchronous-functions
http://jsbin.com/AhirAlOV/5/edit?html,js,output
重要:强>
还要记住,JavaScript不是多线程语言。 JavaScript将在单个线程中运行,但将以块的形式执行。因此,在继续下一个块之前,它必须完成它排队的每个代码块。您可以通过事件和回调获得异步调用的错觉
答案 2 :(得分:0)
Javascript中的大多数功能都是同步的。如果要连续调用几个同步函数
first();
second();
他们将按顺序执行。在second
完成之前,first
才会开始。
答案 3 :(得分:-1)
Javascript是一种异步语言。他们称之为异步语言的原因是,在事件处理程序的帮助下,所有函数都在事件基础上执行,我们实际上无法确定事件何时触发。它可以是鼠标单击事件,加载事件等。然而,函数的执行顺序发生。只有在第一个函数执行后才会进行第二次启动。 但请记住,Javascript是一种异步语言,为什么会这样称呼它。所以回答你的问题,是的! :)