Javascript中的基本回调

时间:2017-03-01 02:39:31

标签: javascript callback

如何实现此代码以正确的顺序(A和B)运行而不用仅使用回调更改setTime?

function a() {
  setTimeout(function () {
    console.log('a');
  },1000);
}

function b() {
  console.log('b');
}

function c() {
  a();
  b();
}

c();

当运行c()时,我需要以同步顺序运行a()和b(),即:

  1. 等一下;
  2. 运行a()函数......
  3. ...然后,运行b()函数

2 个答案:

答案 0 :(得分:3)

您提到使用回调 - 只需向a()添加一个参数,该参数是您在执行console.log(a)后调用的回调函数,然后当您调用a()时将参考传递给b



function a(callback) {
  setTimeout(function () {
    console.log('a');
    if (typeof callback === 'function')
      callback();
  },1000);
}

function b() {
  console.log('b');
}

a(b);   // note: no parentheses after b, i.e., a(b), *not* a(b())
a();    // note: a() still works without any argument




a()内的测试检查callback实际上是对函数的引用意味着您可以选择不传递回调,a()仍然有效。

答案 1 :(得分:1)

异步操作(setTimeout()中正在进行的操作)需要回调才能在完成时调用。将回调提供给a()

function a(callback) {
  setTimeout(function () {
    console.log('a');
    if (typeof callback === "function") { 
      callback();
    }
  },1000);
}

然后为该回调传递b的引用:

function c() {
  a(b);
}