如何编写一个接受两个回调并依次调用它们的函数?

时间:2019-04-22 00:19:57

标签: javascript

注意:此练习专门要求我使用回调而不是诺言

目前,我花了一些时间检查是否有与我所遇到的问题类似的解决方案(我确实找到了,但是由于解决方案似乎有点不清楚,如何执行该解决方案尚不清楚更复杂,似乎没有用)。在本练习中,我被告知需要创建一个名为inOrder的函数,该函数接受两个回调并依次调用它们。我有点理解回调的工作原理(您将一个函数放在另一个函数的参数中),但是是什么使我无法使用setTimeout函数。 我得到了两个包含logOne的函数(logTwosetTimeOut),它们将依次console.log一个和两个,无论调用多少次。本质上,目标是使用回调来解决JavaScript和SetTimeOut的异步性质,console.log首先{2},然后{1}(有时)。我可以解决它,但是我的解决方案似乎效率很低,并且不确定我是否了解回调的范围。这是我的解决方案:

  console.log("one!");
}, Math.random() * 1000);
}
function logTwo () {  setTimeout(function() {
  console.log("two!");
}, Math.random() * 1000);
}

function inOrder (callback1, callback2) {
    setTimeout(function(){
        logTwo()
    }, 1000);
    callback1();
 }

 inOrder(logOne, function() {
    logTwo();
 })

因此,此解决方案将始终导致先打印出一个,然后不久之后再打印一个。如果您对我是否正在正确考虑或如何更有效地进行操作有任何建议,将不胜感激。感谢您的宝贵时间。

0 个答案:

没有答案