javascript函数是同步还是异步?

时间:2014-10-28 10:38:50

标签: javascript

我有以下JS代码:

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

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

4 个答案:

答案 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是一种异步语言,为什么会这样称呼它。所以回答你的问题,是的! :)