javascript - 如何使用回调来保证顺序执行?

标签 javascript asynchronous callback asynccallback

我试图理解回调,但我不明白回调如何保证一个语句将在(就时间而言)另一个需要执行的语句之后执行未知的时间。我不关心 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() 将立即触发。

You can find more info about callback in here.

关于javascript - 如何使用回调来保证顺序执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59728065/

相关文章:

javascript - Bootstrap 4 : Modal won't show on my react app

javascript - JSON 是使用文件类型创建的,而不是 .JSON

javascript - 为什么协变/逆变意味着只读/只写?

javascript - 外部变量和 jQuery 函数内部的作用域

node.js - 如何减少node js回调函数中的嵌套循环?

unity3d - 在 Unity3D 中异步加载场景不起作用

javascript - 测试异步 Ajax 调用

java - 使用 HttpAsyncClient 发送异步调用时出现问题

Android:来自音频的外部硬件中断

Meteor [错误 : Can't wait without a fiber] after a call to Email. 发送