我对 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/