关于异步和回调

先上大佬的文章吧

大佬文章

 

异步和同步

异步是指一个不等一个任务返回结果(成功/失败/或其他结果),就直接执行下一句代码。
同步则是前者执行完拿到结果(返回值)了之后,再执行下一句代码。

异步常见是在定时器和ajax中会产生
异步情况下,代码的书写顺序和执行的顺序是不同的
可以通过回调拿到异步的结果,按同步的顺序执行

 

示例代码:

让异步代码按顺序执行

function a (fn){
    setTimeout(function(){
        console.log('显示a')
        fn.call()
    },3000)
}

a(function b (){
    console.log('显示b')
})

//显示a
//显示b

 

ajax使用异步

// 原代码——同步的写法
function taskB(){
  var response = $.ajax({
    url:"/data.json",
    async: false // 注意这里 async 为 false,表示是同步
  })
  return response // 十秒钟后,返回 response
}

taskA()
taskB()
taskC()

//执行顺序是A—B—Ajax—C


//改成异步

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

//执行顺序是A—B—C JS引擎执行
//           —Ajax  浏览器的网络请求模块执行

//这里C和Ajax同时执行,但是执行主体不同

 

回调(call back)

上一篇大佬文章

大佬文章

 

回调是一种特殊的函数调用方式,当一个函数作为参数传入,后被调用,那这个函数就是回调函数

 

示例代码:

functon fn(fn2){
    fn2.call()
}

// fn 将别人传给它的 fn2 调用了,这种调用就是回调

 

posted @ 2019-08-05 09:49  BUBU_Sourire  阅读(180)  评论(0编辑  收藏  举报