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

如何控制在Javascript中首先运行哪个函数,javascript,Javascript,如何控制JavaScript先运行哪个函数, 我并不总是希望那个特定的函数先运行,而是另一个。 怎么办?使用自调用函数表达式 例如: 并确保这在任何类似函数之前出现,包括外部添加脚本中的一个函数,Javascript是单线程的,无论调用哪个函数都是按该顺序执行的。此规则的唯一例外是如何执行事件循环 因此,对setTimeout或setInterval的调用不能给出第一个调用哪个方法的真正想法。即使使用具有相同间隔的setTimeout。在理论上,第一个方法应该首先在事件队列中执行,但这可能取决于

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

使用自调用函数表达式

例如:


并确保这在任何类似函数之前出现,包括外部添加脚本中的一个函数,Javascript是单线程的,无论调用哪个函数都是按该顺序执行的。此规则的唯一例外是如何执行事件循环

因此,对setTimeout或setInterval的调用不能给出第一个调用哪个方法的真正想法。即使使用具有相同间隔的setTimeout。在理论上,第一个方法应该首先在事件队列中执行,但这可能取决于实现

如果您想同步事件函数,您有一系列的工具和库,这些工具和库正是您所需要的

回调方法可用于在某种工作完成时调用延续。这种模式在一种称为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)
})
承诺的优点是它们可以链接,因此,您可以使用异步API,非常类似于通常的同步API。所有“then”部分都将按照您添加它们的顺序执行

这是promisejs的网站,它对承诺做了很好的解释。

将“that”函数放在“other”之后,您能分享一下您的代码吗?你的问题太模糊,无法回答。Thankscall“that”函数在“other”之后抱歉,我遇到的问题是,我使用的是谷歌地图Api,我不想立即初始化地图,我想先做一些计算。但在计算之前,我使用一个函数通过按下按钮获取本地文件。所以真正的问题是,在我将所有数据放入javascript之前,是否有任何方法阻止map初始化。
function foo(id) {
  return promiseGet('/data' + id)
}
foo(4).then(function (data) {
  alert(data)
})