javascript - Javascript 中的异步性

标签 javascript

我有一个关于 Javascript 异步性的问题。据我所知,Javascript 只使用一个线程,但能够异步处理事件。

我有以下代码:

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

现在,我需要函数 game.nextthis.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 - 你能通过 AJAX 将谷歌地图插入页面吗

javascript - 如何使用JQuery将值数组插入数据库

javascript - 如何在javascript中选择大整数中的第n个数字?

javascript - 在 map 函数中访问嵌套对象(及其数据)

javascript - JQuery UI 自动完成回调

javascript - 错误 : WebGL warning: vertexAttribPointer: -1 is not a valid `index`

javascript - AngularJS-复选框-计算多个选中/未选中的项目

javascript - 观察 Controller 变量,设置为 this 而不是 $scope,可能吗?馊主意

javascript - 如何读取nodejs中的pem文件?

javascript - 需要帮助理解这个 lisp 函数