在此 JavaScript 代码中,有什么方法可以在“再见”之前先记录“hello”吗?

问题描述 投票:0回答:1
first(second);

function first(callback) {
    hello();
    callback();
}

function second(){
    goodbye(); 
}

function hello() {
    setTimeout(() => {
        console.log('Hello');
    }, 3000);
}

function goodbye() {
  console.log('Goodbye');
  
}

有什么方法可以确保第一个函数在调用第二个函数之前完全完成运行,以便我可以防止在 hello 之前记录 Goodbye?

我知道我可以先设置超时,但我想看看是否还有其他方法。

javascript asynchronous
1个回答
0
投票

您可以将函数作为参数传递到

callback
函数中,然后在
first
中调用它,而不是直接在
hello
函数内调用
setTimeout
函数。

first(second);

function first(callback) {
   hello(callback);
}

function second(){
   goodbye(); 
}

function hello(callback) {
   setTimeout(() => {
      console.log('Hello');
      callback();
   }, 3000);
}

function goodbye() {
   console.log('Goodbye');
}
© www.soinside.com 2019 - 2024. All rights reserved.