• 关于异步和回调


    先上大佬的文章吧

    大佬文章

    异步和同步

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

    异步常见是在定时器和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 调用了,这种调用就是回调
  • 相关阅读:
    To My Girlfriend (DP)
    A Simple Nim (SG打表找规律)
    A Boring Question (打表)
    A Simple Chess (Lucas组合数 + 容斥)
    World is Exploding (容斥 + 统计)
    Two (DP)
    K-wolf Number (数位DP)
    Interesting (manacher + 前缀和处理)
    How Many Triangles (极角排序 + 尺取法)
    Divide the Sequence (贪心)
  • 原文地址:https://www.cnblogs.com/BUBU-Sourire/p/11301250.html
Copyright © 2020-2023  润新知