异步什么时候用?

一般什么情况下需要用到「异步」?

异步

现有三个函数,taskA()、taskB()和taskC(),三个任务互不影响。

taskA和taskC执行得比较快,taskB执行得比较慢,耗时5秒。

// 同步的写法
function taskB() {
  var response = $.ajax({
    url: "./data.json",
    async: false // 表示同步
  })
  return response // 五秒后,返回response
}

taskA()
taskB()
taskC()

taskC必须要等taskB执行完了才能执行,这就是「同步」。

执行顺序是:

A -> B -> AJAX请求 -> C -----------

我们将其换成「异步」:

// 异步的写法
function taskB() {
  var result = $.ajax({
    url: "./data.json",
    async: true // 异步
  })
  return result // 一定要注意,现在的 result 不是上面的 response
}

taskA()
taskB()
taskC()

这下执行顺序就变成了:

A -> B -> C --------
       -> AJAX 请求 -----------

也就是说,AJAX 请求和任务 C 是同时执行的。

但是我们要注意执行的主体。AJAX 请求是由浏览器的网络请求模块执行的,taskC 是由 JS 引擎执行的。

综上,如果几个任务相互独立,且其中一个任务执行时间较长,那么一般就会用异步方式来做这件事。