JavaScript函数执行顺序

时间:2017-02-06 15:33:24

标签: javascript

假设您有以下三个功能和变量

var someList = [];

makeObject() {

 // loops through someList here to create an object
 // then calls sendObject function

sendObject()

}

sendObject() {
 // sends object to database using HTTP call
}

resetList() {
 // resets the list to be empty
 // e.g. someList = []
}

然后你这样称呼它们

makeObject()
resetList()

在makeObject函数有机会循环之前,是否有可能重置列表?

2 个答案:

答案 0 :(得分:2)

您可以在JavaScript中执行许多异步和非阻塞的操作(XMLHttpRequestsetTimeout是经典示例)。如果您使用makeObject内的任何内容,那么resetList将在异步部分被调用之前运行。

答案 1 :(得分:2)

在进行HTTP调用之后,将直接调用

resetList()。除非您在HTTP调用之前执行其他异步工作,否则订单将始终为:

  • makeObject()
  • 循环使用makeObject()
  • 从makeObject()
  • 内部调用sendObject()
  • sendObject()执行HTTP调用
  • resetList()在HTTP调用之后立即被触发,因为该HTTP调用是异步的。
  • HTTP返回并且触发附加到它的任何处理程序。

但请确保您不做任何其他异步工作,否则这不适用。