如何控制在Javascript中首先运行哪个函数

时间:2016-01-08 08:39:10

标签: javascript

如何控制JavaScript首先运行的功能, 我并不总是希望特定的功能先运行而另一个运行。 怎么办?

2 个答案:

答案 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);

并确保,这是在任何类似的功能之前,包括在外部添加的脚本中的一个