如何控制JavaScript首先运行的功能, 我并不总是希望特定的功能先运行而另一个运行。 怎么办?
答案 0 :(得分:1)
Javascript是单线程的,无论调用哪个函数都按该顺序执行。此规则的唯一例外是如何执行事件循环。
因此,对setTimeout或setInterval的调用无法真正了解首先调用哪个方法。即使您使用具有相同间隔的setTimeout。在理论上,第一个方法应该首先在事件队列中执行,但可能需要实现。
如果您想要同步功能,您可以使用一系列工具和库,这些只是您需要的。
当某种工作完成时,回调方法可用于调用延续。这种模式在一个称为Promise的更复杂的数据结构中得到了改进。
Promise与回调几乎相同,但它们在语法上更好用。
回调:
function foo(id, callback){
//ajax.get('/data/' + id, callback)
ajax.get('/data/' + id, function (data) {
callback(data)
})
}
foo(id, function (data) {
alert(data)
})
无极:
function foo(id) {
return promiseGet('/data' + id)
}
foo(4).then(function (data) {
alert(data)
})
承诺的优点是它们可以被链接,因此,您可以使用异步apis,就像通常同步apis一样。所有"然后"部件将按您添加的顺序执行。
这里是promisejs的网站,对承诺做了很好的解释。 https://www.promisejs.org/
答案 1 :(得分:0)
使用自调用函数表达式
例如:
(function (i) {
console.log(i):
})(5);
并确保,这是在任何类似的功能之前,包括在外部添加的脚本中的一个