如何将两个非常基本的函数转换为回调函数

时间:2018-06-10 16:21:16

标签: javascript node.js callback

我在Javascript中有两个非常基本的功能

function def(){
    console.log("DEF")
}

function abc(){
    setTimeout(function(){
        console.log("ABC")
    }, 1000)    
    def();
}

abc();

以上功能打印DEF然后打印ABC。我想按顺序打印它们,例如ABC然后是DEF。

我对回调有基本的想法,但我没有得到如何将上述函数转换为回调函数以获得所需的输出:)

2 个答案:

答案 0 :(得分:1)

根据我的观点,@ Matatez的回答是不必要的复杂。

如果您想将回调函数发送给任何函数,您必须将其作为参数发送给该函数。

// Function you want to send as a callback
function def(){
    console.log("DEF")
}

// Function in which you want to call this callback
function abc(callback){
    setTimeout(function(){
        // Log ABC to the console
        console.log("ABC");
        // Call the callback function after the ABC has been logged
        callback();
    }, 1000);
}

// Call the function and pass your callback as parameter
abc(def);

答案 1 :(得分:0)

在JavaScript中,函数是一等成员,所以你可以将它们作为参数传递给其他函数,就像你对任何其他对象一样:

function def(){
    console.log("DEF")
}

function abc(){
    setTimeout(function(){
        console.log("ABC")
    }, 1000)    
}

function withCallbacks(...callbacks) {
    callbacks.forEach(callback => callback());
}

withCallbacks(abc, def); // prints DEF, ABC