2 异步

作者: 卢卢2020 | 来源:发表于2021-02-04 13:24 被阅读0次

    异步

    如果能直接拿到结果  ===>>>>>>   那就是同步

    比如你在医院挂号,你拿到号才会离开窗口 

    同步任务可能消耗10毫秒,也可能需要3秒

    总之不拿到结果你是不会离开的

    如果不能直接拿到结果  ===>>>>>>  那就是异步

    比如你在餐厅门口等位,你拿到号可以去逛街

    什么时候才能真正吃饭呢 你不知道

    所以你可以每10分钟去餐厅问一下(轮询)

    你也可以扫码用微信接收通知(回调)

           ==>回调callback

    你写给自己用的函数,不是回调

    你写给别人用的函数,就是回调

    request.onreadystatechange就是我写给浏览器用的

    意思就是你(浏览器)回头调一下这个函数

    在中文里,回头也有将来的意思 如我回头请你吃饭


           ==>回调举例

    把函数1 给另一个函数2 

    function f1(){}

    function f2(fn){

    fn()

    }

    f2(f1)

    分析:

    我调用f1没有? 答:没有调用

    我把f1传给f2(别人)了没有?答:传了

    f2调用f1了没有?答: f2调用了f1

    那么, f1是不是我写给f2调用的函数?答:是

    所以,f1是回调

    异步和回调的关系

         ===>>>>关联

    异步任务需要在得到结果时通知JS来拿结果

    怎么通知   可以让JS留一个函数地址(电话号码)给浏览器

    异步任务完成时浏览器调用该函数地址即可(拨打电话)

    同时把结果作为参数传给该函数(电话里说可以来吃了)

    这个函数是我写给浏览器调用的,所以是回调函数

         ===>>>区别

    异步任务需要用到回调函数来通知结果

    但回调函数不一定只用在异步任务里

    回调可以用到同步任务里

    比如:array.forEach(n=>console.log(n)) 就是同步回调 它一直调用n

        ===>>>> 判断同步异步

    如果一个函数的返回值处于

    setTimeout

    AJAX(即XMLHttpRequest)

    AddEventListener

    这三个东西内部,那么这个函数就是异步函数(如果有别的再另说明)

    AJAX也可以设置为同步? ===>>>> 傻X才把AJAX设置为同步,这样做会使请求期间页面卡住

    异步总结

    异步任务不能拿到结果

    于是我们传一个回给异步任务

    异步任务完成时调用回调

    调用的时候把结果作为参数

    相关文章

      网友评论

          本文标题:2 异步

          本文链接:https://www.haomeiwen.com/subject/nuimtltx.html