Javascript中的函数链

Goo*_*bot 1 javascript javascript-events

在javascript中,我们以准并行方式触发函数

window.onload=function(){
document.getElementById("test").addEventListener('click', function1(), false);
//consider it takes 3 seconds to be completed
document.getElementById("test").addEventListener('click', function2(), false);
}
Run Code Online (Sandbox Code Playgroud)

我们如何能火function2()function1()执行完毕?

在jQuery中,我们可以链接一系列函数(例如):

$(this).fadeIn(3000).fadeOut(2000);
Run Code Online (Sandbox Code Playgroud)

如何在纯JavaScript中进行此功能更改?

编辑:在回应否定评论和投票时,我提供了这个例子:

function delay(time, func){
setTimeout(func,time);
}

delay(2000,function(){alert('Function 1');});
delay(1000,function(){alert('Function 2');});
Run Code Online (Sandbox Code Playgroud)

在此示例中,您将首先看到"功能2"的警报.

Dar*_*rov 5

如果function1是异步的,你将不得不修改它,以便调用者可以传递一个完成后将执行的回调,例如jQuery的ajax方法提供回调,例如成功,错误,......:

window.onload = function() {
    function1(function() {
        // the callback is executed once function1 completes so
        // we can now invoke function 2
        function2();
    });
};
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这可以用更简洁的方式写成:

window.onload = function() {
    function1(function2);
};
Run Code Online (Sandbox Code Playgroud)