什么是异步

2020-01-04  本文已影响0人  罗斯福

总体介绍:

同步:去黄牛店铺买票,等黄牛买到票以后,拿票走人(需要任务执行完了,再执行下一任务)
异步:去黄牛店铺买票,回家后等黄牛打电话(callback)了再去拿票(不等任务执行完,直接进行下一任务)

举例

1,异步代码:代码编写顺序和执行顺序不一样

console.log(1)
setTimeout(function(){
  console.log(2)
},0)
console.log(3)

2,平常的异步实例
特别注意:

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

聪明的你会发现以上的代码并不是异步执行的结果,二十一个time id。那怎么拿到结果呢,用回调

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

taskAsync(function callback(result){
  console.log(result) // 三秒钟后,这个 callback 函数会被执行
})
otherTask()   

3,典型的异步实例

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

总结:1,JS引擎不会同时做两件事,例如setTimeout,A事件和B事件之间还是存在一定的事件差,异步并不强制要求两个任务同时执行
2,Ajax,可以与JS代码同时执行,因为这个不是由JS引擎负责,是由浏览器网络模块负责

上一篇下一篇

猜你喜欢

热点阅读