在Javascript中一个接一个地执行2个函数的有效方法

Ada*_*gen 4 javascript

我有两个功能

function one() {
    setTimeout(function(){ console.log("first function executed"); }, 3000);
}

function two() {
    console.log("second function executed");
}
Run Code Online (Sandbox Code Playgroud)

如何让第二个函数等到第一个函数执行?对于初学者来说,最简单的方法是什么?感谢名单

Kev*_*Bot 13

有两种方法可以解决这个问题,两种最常见的方法是使用回调或使用Promises.

使用回调

您将向第一个函数添加一个回调参数,然后将函数二作为回调传入:

function one(callback) {
  setTimeout(function() {
    console.log("first function executed");
    callback();
  }, 3000);
}

function two() {
  console.log("second function executed");
}

one(two)
Run Code Online (Sandbox Code Playgroud)

使用承诺:

Promise允许您将依赖于排序的不同操作链接在一起.但是,您可能需要添加polyfill以支持旧版浏览器:

function one(callback) {
  return new Promise(function(resolve, reject) {
    setTimeout(function() {
      console.log("first function executed");
      resolve();
    }, 3000);
  })
}

function two() {
  console.log("second function executed");
}

one().then(two)
Run Code Online (Sandbox Code Playgroud)

  • @AdamJungen,太棒了!我很高兴 Promises 示例对理解 Promises 有所帮助并提供了更多上下文。 (2认同)