javascript - Javascript 中的异步性

标签 javascript

我对 Javascript 中的异步性有疑问。据我所知,Javascript 仅使用一个线程,但能够异步处理事件。

我有以下代码:

game.next();
this.autopilot();

现在,我需要函数 game.next 在调用 this.autopilot 函数之前完成。 Javascript 是真的等到 game.next 完成还是立即运行 this.autopilot

如果是,回调是否可以解决问题?

下一个回调函数:

Game.prototype.next = function(callback) {
    // Code

    if(callback !== undefined) {
        callback();
    }
};

使用该回调的调用函数:

game.next(function() {
    this.autopilot();
}.bind(this));

最佳答案

在您的代码中,game.next() 必须在调用 this.autopilot() 之前返回。

但是,game.next() 可能会启动一个异步过程(例如,一个 Ajax 调用)并在该过程完成之前返回。如果您想推迟执行 this.autopilot() 直到该过程完成,那么您需要某种回调机制。 game.next() 必须将回调函数传递给任何正在发生的异步处理。 (正如您在问题中所建议的那样,在返回之前执行回调是错误的,因为这也会在异步过程完成之前发生。)

关于javascript - Javascript 中的异步性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17732090/

相关文章:

javascript - polymer 复位性能

javascript - 如何编写加载特定图像后消失的加载屏幕?

javascript - 如何通过javascript设置下拉列表中的选定值

javascript - 在没有 jquery 的情况下使用 javascript 解析 xml

与 jQuery AJAX 一起工作的 PHP 关联数组解决方案

javascript - 如何在 React.js 中使用字符串数组来使用变量名

javascript - 展平数组 : where does the 0 come from?

javascript - 需要了解 passport.js 本地策略

javascript - 将 Canvas 保存为 PNG 或 JPEG 文件

javascript - 如何在 javascript 中正确使用 <a> 标签,但没有 href 链接