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

标签 javascript

我有两个功能

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

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

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

最佳答案

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

使用回调

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

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

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

one(two)

使用 promise :

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

function one() {
  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)

关于javascript - 在 Javascript 中一个接一个地执行 2 个函数的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43187870/

相关文章:

javascript - 使用 getter 在 React 组件中渲染另一个组件是一种好习惯吗?

javascript - 我的 html 页面中页脚后出现空白

javascript - iPhone 上滚动事件内的 SetInterval - 为什么此代码不起作用?

javascript - 如何以非网格形式显示圆圈

javascript - 数据表行按钮在 jade 模板中不起作用

javascript - Chrome 扩展 : Open new tab without losing popup focus

javascript - 无法以正确的方式在 Javascript 中实现异步 XMLHttpRequest

c# - jQuery 多选插件中未显示数据

javascript - 使用纯 npm 构建在 NW.js (node-webkit) 应用程序中加载 Bootstrap

javascript - JQuery .on() 更改事件未触发(页面在 .load() 内)