2014-10-28 118 views
3

我有以下JS代码:javascript函数是同步还是异步?

<script> 
first(); 
second(); 
</script> 

我想确保second()会的first()完全执行后运行。这是预期的默认行为?

+0

不是更快的尝试和看到(或很好...检查JS规格?如果它不是那样,它与99.99%的语言有很大的区别,然后在doc中突出显示)... – 2014-10-28 10:43:03

回答

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你可以找到另一为例e

+0

现在很清楚..非常感谢:)是的,我有AJAX调用。所以我应该运行第二个函数作为第一个响应:) – 2014-10-28 12:16:15

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将在单个线程中运行,但会以块的形式执行。所以它将不得不完成它已经排队的每个代码块,然后继续到下一个块。您可以通过事件和回调获得异步调用错觉

0

Javascript中的大多数函数都是同步的。如果您要连续调用几个同步函数,则它们将按顺序执行。

first(); 
second();  

它们将按顺序执行。直到first已完成,second才会启动。

-1

Javascript是一种异步语言。他们称之为异步语言的原因是在事件的基础上执行所有函数,在事件处理程序的帮助下,我们确实无法确定事件何时会触发。它可以是鼠标点击事件,加载事件等。然而,功能的执行顺序发生。只有在第一个函数执行后,第二次启动。 但请记住,JavaScript是一种异步语言,为什么它是这样调用的。所以要回答你的问题,是的! :)

相关问题