注意:此练习专门要求我使用回调而不是诺言
目前,我花了一些时间检查是否有与我所遇到的问题类似的解决方案(我确实找到了,但是由于解决方案似乎有点不清楚,如何执行该解决方案尚不清楚更复杂,似乎没有用)。在本练习中,我被告知需要创建一个名为inOrder
的函数,该函数接受两个回调并依次调用它们。我有点理解回调的工作原理(您将一个函数放在另一个函数的参数中),但是是什么使我无法使用setTimeout
函数。
我得到了两个包含logOne
的函数(logTwo
和setTimeOut
),它们将依次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();
})
因此,此解决方案将始终导致先打印出一个,然后不久之后再打印一个。如果您对我是否正在正确考虑或如何更有效地进行操作有任何建议,将不胜感激。感谢您的宝贵时间。