Как преобразовать две очень простые функции в функцию обратного вызова - PullRequest
0 голосов
/ 10 июня 2018

У меня есть две очень основные функции в Javascript

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

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

abc();

Вышеуказанные функции выводят DEF, а затем ABC.Я хочу напечатать их по порядку, например, ABC, а затем DEF.

У меня есть общее представление о обратном вызове, но я не понимаю, как преобразовать вышеуказанные функции в функцию обратного вызова, чтобы получить желаемый результат:)

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

По моему мнению, ответ @Mateusz излишне сложен.

Если вы хотите отправить обратный вызов какой-либо функции, вы должны отправить его в качестве параметра этой функции.

// 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);
0 голосов
/ 10 июня 2018

В 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...