Я знаю, что 2 будет сначала console.logged, а затем 1. Есть ли способ, может быть, с помощью обратных вызовов, я могу показать сначала 1, а затем 2?
function first(){
// Simulate a code delay
setTimeout( function(){
console.log(1);
}, 500 );
}
function second(){
console.log(2);
}
first();
second();
Поместите second()
вызов в setTimeout
:
function first(){
// Simulate a code delay
setTimeout( function(){
console.log(1);
second();
}, 500 );
}
function second(){
console.log(2);
}
first();
Вы также можете полностью обойти first
, second
и setTimeout
:
console.log(1);
console.log(2);
function second(){
console.log(2);
}
function first(cb){
// Simulate a code delay
return setTimeout( function(){
console.log(1);
cb();
}, 500 );
}
first(second);
не используйте вызов тайм-аута в first
функции. или вы можете использовать promises
для лучшего понимания порядка выполнения callback
event loop
прочитайте эту ссылку на статью. эта статья объясняет порядок выполнения, который получает приоритет среди обещаний, тайм-аутов и т.д.
Надеюсь, это поможет
Решите это, пообещав клан и элегантный способ:
function second() {
console.log("test2", 2);
}
function first() {
var promise = new Promise(function (resolve, reject) {
setTimeout(function () {
console.log("test1", 1);
resolve();
}, 500);
});
return promise;
}
first().then(function () {
second();
});
second()
по таймаутуfirst
илиsecond
; просто сделайтеconsole.log(1); console.log(2);
,