首先,非常感谢任何想看看我的问题的人。这是完全基本的,但我不知道。我查看了所有教程,但异步回调让我发疯。 非常感谢你们的帮助,来自德国的问候:)
如果有人能告诉我为什么下面的代码没有按预期登录到控制台。 预期意味着,在Timeout功能完成后调用回调。 相反,我的控制台首先记录回调? 我在这里还有什么问题?
function doHomework(subject, callback) {
setTimeout(function () {
console.log(`Starting my ${subject} homework.`);
}, 10);
callback();
}
doHomework('math', function() {
console.log('Finished my homework');
});
答案 0 :(得分:1)
您需要在setTimeout
function doHomework(subject, callback) {
setTimeout(function () {
console.log(`Starting my ${subject} homework.`);
callback();
}, 10);
}
答案 1 :(得分:1)
问题是您在setTimeout
函数之外执行回调。 Javascript异步执行代码,这意味着它不会等到上一个代码完成"在继续下一行之前。
因此,当您致电doHomework
时,它将启动计时器,并立即继续执行下一行代码,即回调。
然后,当10ms结束时,执行超时内的代码。
为了获得所需的结果,您必须将回调执行放在setTimeout
函数中,如下所示:
function doHomework(subject, callback) {
setTimeout(function () {
console.log(`Starting my ${subject} homework.`);
callback();
}, 10);
}