我试图理解回调,但我不明白回调如何保证一个语句将在(就时间而言)另一个需要执行的语句之后执行未知的时间。我不关心 promise 、等待、异步等,而只关心我正在学习的简单回调。
<小时/>例如下面的例子,我的方法将在未知时间事件发生之前执行回调。我可以看到如何使用回调来执行某些操作因为发生了事件,但不知道如何使用回调来保证执行某些操作之后(就时间而言)其他事物已完成执行并返回有意义的内容。
function foo(callback) {
setTimeout(() => console.log("Do something with unknown time"),
2000);
callback();
}
function callback() {
console.log("Execute callback");
}
foo(callback);
那么我想问的是回调可以用来保证时域的执行顺序吗?或者他们的唯一目的是响应事件?
最佳答案
回调是一种调用函数的方法,该函数作为参数传递给调用者函数(在您的示例中foo
)。回调保证如果在函数内部调用之前没有发生错误,则将调用该函数。回调也不是异步的,但它在某行代码之后在函数内部执行的方式让每个人一开始都认为它是异步的。
正如您在上面的示例中添加了 setTimeout
函数一样,setTimeout
是一个异步回调调用函数,它调用它的回调(在您的代码中 () => console.log("用未知时间做某事")
) 在某个定义的时间 (2000
) 之后异步执行。因此,setTimeout
不会像您预期的那样停止执行 2 秒,而是让我们继续执行后面的代码行,而不必担心回调内部会发生什么。因此,当 foo(callback);
被触发时,callback()
将立即触发。
关于javascript - 如何使用回调来保证顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59728065/