首页前端开发正文

回调经常用于获取异步任务的结果

朱绪2021-11-19161JavaScript

下面是个异步代码:

var taskAsync = function() {
  var result = setTimeout(function() {
    console.log('异步任务的结果')
  }, 3000)
  return result
}

var result = taskAsync()
otherTask()

你会发现,这个result并不是异步任务的结果,而是一个 timer id。

那么,如何才能拿到异步任务的结果呢?

答案是:用回调。

将代码改成下面这样:

var taskAsync = function(callback) {
  var result = setTimeout(function() {
    callback('异步任务的结果')
  }, 3000)
  return result
}

taskAsync(function callback(result) {
  console.log(result)  //三秒钟后,callback函数会被执行
})
otherTask()  //立即执行其他任务,不等异步任务结束