执行setTimeout时,使用lodash触发两个函数

时间:2016-08-16 20:28:40

标签: javascript lodash

有没有办法优化这个:

function run1 () {
  console.log("Hello");
}
function run2 () {
  console.log("World");
}
function timeoutComplete () {
  run1();
  run2();
}
setTimeout(timeoutComplete, 1000);

像这样,所以我不需要声明timeoutComplete ......?

setTimeout(_.xyz(run1, run2), 1000);

4 个答案:

答案 0 :(得分:2)

你总是可以在超时中使用匿名函数并在那里调用它们:

setTimeout(function() {
    run1(); 
    run2();
});

答案 1 :(得分:2)

您可以使用delay()flow()

_.delay(_.flow(run1, run2), 1000);

delay()优于setTimeout()的主要优点是,如果需要,它可以将参数传递给回调。

答案 2 :(得分:1)

您可以改为使用匿名函数:

setTimeout(function() {
  run1();
  run2();
}, 1000);

答案 3 :(得分:0)

自己写_.xyz,除了它不需要是lodash函数:

function run(...fns) {
  return function() {
    fns.forEach(fn => fn());
  };
}

setTimeout(run(run1, run2), 1000);