zoukankan      html  css  js  c++  java
  • 关于异步和回调

    先上大佬的文章吧

    大佬文章

    异步和同步

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

    异步常见是在定时器和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 调用了,这种调用就是回调
  • 相关阅读:
    64位系统上32位进程拷贝文件到System32目录时的重定向
    mac osx上为qt应用生成debug symbol
    c++正则表达式模板库GRETA的使用
    win驱动安装记录
    QWidget标题栏双击事件
    mac上的应用提权
    js初级DOM&BOM知识点总结
    js数组遍历
    angular.js小知识总结
    Node.js
  • 原文地址:https://www.cnblogs.com/BUBU-Sourire/p/11301250.html
Copyright © 2011-2022 走看看