我一直在阅读有关回调函数的文章 here ,并了解到JavaScript是一种单线程同步语言。
这意味着,如果您想从数据库收集数据,那么您必须等待例程完成才能执行更多代码。这是真的?如果用户按下按钮来调用同一脚本文件中的不同函数会发生什么?
要使其异步,您可以使用回调。这里的异步意味着回调中的一段代码将在调用之前“等待”事件,但不会创建新线程。
Object
使 JavaScript 回调异步的原因是什么?
这和等待事件一样吗?
最佳答案
确实,对于 Javascript,如果您要调用数据库,通常您必须等待数据库响应(即往返 Pluto ),然后您的代码才能继续执行。这称为“阻塞”调用。
回调允许您执行阻塞调用,但在执行此操作时还要说,“在阻塞调用结束时执行此代码,但不要等待它发生。”因此,您的程序将继续执行。当阻塞调用完成时,您在回调中指定的代码(尚未运行)将执行。这可能几乎立即发生,也可能在一段时间后发生。
使用 Javascript,其余代码将完成执行,然后将执行由阻塞调用完成触发的第一个回调,依此类推,直到执行所有回调。此时线程将被关闭。
请注意,只有回调代码是“等待事件”。
因此,执行顺序如下所示:
- 执行一些代码。
- 设置回调代码。
- 执行阻塞调用。
- 执行剩余代码。
- 等待阻塞调用返回。
- 执行回调代码。
- 停止线程进程。
关于javascript - 回调作为对象 - 它与 JavaScript 中的异步编程有何关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31799191/