2015-12-28 5 views
1

Я думаю, что это так просто, поэтому люди могут быть минус голосов по этому документу, но даже в этом случае я так смутил меня в функции обратного вызова в JavaScript.Использование функции обратного вызова Javascript

function doSomething(callback){ 
    setTimeout(hello,5000); 
    callback(); 
} 


function hi(){ 
    console.log("hi"); 
} 

function hello(){ 
    console.log("hello"); 
} 

doSomething(hi); 

/* result */ 
// hi 
// (after 5 seconds) hello 

Я хочу использовать функцию обратного вызова в качестве выполнения заказа описателя функции, поэтому я решил использовать обратный вызов шаблон. В приведенном выше коде я думаю, что через 5 секунд функция обратного вызова должна быть выполнена, но почему обратный вызов игнорируется перед функцией и запускался первым? Не могли бы вы рассказать мне какой-то намек.

Спасибо.

+0

Поскольку ваш тайм-аут не включает 'callback', он работает сам по себе –

ответ

4

В коде callback() выполнял после выполнения строки setTimeout() но обратного вызова setTimeout вызовет после 5000ms, что ожидаемое поведение. Так что если вы хотите, чтобы callback() exeute после hello() сделать:

function doSomething(callback){ 
    setTimeout(function(){ 
     hello(); 
     callback(); 
    },5000); 
} 
Смежные вопросы