• 回调函数 和 promise对象,及 请求接口的管理


    1、回调函数:https://blog.csdn.net/baidu_32262373/article/details/54969696

    注意:回调函数不一定需要用到 return。如果浏览器支持Promise对象,则可以不用回调函数实现程序。(个人感觉,Promise实现,就像把回调函数难道了外面,通过l链式结构实现)

    引申:同步程序封装后,通过return返回值,就可以把需要的值给别人。异步程序封装后,只能通过回调函数把值给别人。不然无法获得预期的值

    2、请求接口的管理:一般一个接口,可能会出现多个地方使用。如果把请求接口放在文件里,页面中使用这个接口,只要传入参数调用这个方法就可以了,及请求后的  执行的程序(即回调函数)。这样可以便于管理所有的接口。

    function getStausList(obj,Callback) {
        axios.get('./json/stausList.json').then(
            function(res){
                Callback(res.data);  // axios.js中的ajax请求返回的数据是放在  res.data 对象里面的,而不是res
            },
            function(){
                alert('连接失败')
            }
        )
    }
    
    getStausList(null,function(res){ // res 就是这个请求返回来的数据
      // do sthing
    })

    3、Promise的then里面的函数要用到then方法的,通过return 操作符 抛出去,就可以让所有的then方法都是链式的写法。这样不管是从可读性还是,逻辑清晰上都是好的。

    abc().then(  // abc是一个Promise对象( 如axios方法 )
        (res) => {
          return rqubb()   // rqubb 也是一个Promise对象 ( 如axios方法)
    } ).then(
      (res) => { // 这里res就是 rqubb 传入的参数了
        // do sthing
      }
    )

    promise视频学习笔记

    1、

    感悟:回调函数中里面 无法把里面值通过 return 返回出去,但是promise中的 resolve()可以把里面的值弄出来,传递到then的函数中。

       回调函数之所以会出现回调地狱的问题,就是回调函数中值无法弄出来,只能不断的嵌套使用。但是 promise + async/await 解决了这个问题,从此js没有这个问题。


    浏览器环境下的JavaScript Event Loop 扩展知识:参考链接

    1、在JavaScript引擎的线程上【js引擎是单线程的】,会包含一个执行栈(按照栈后进先出的顺序处理栈中的任务);而在执行栈之外,会独立使用一个容器来专门管理异步状态,这个容器就是task queue (任务队列)。

       Event Loop 处在两者之间,扮演一个调度者的角色,它会以一个固定的时间间隔不断轮询,当它发现执行栈空闲,就会去到 Task 队列里拿一个异步回调,把它塞入执行栈中执行。

    2、任务队列中的任务会被分为两种:微任务(microtask)和宏任务(macrotask)【两种任务 是有优先级的】。

       微任务的优先级 比 宏任务的要高,所以先执行 微任务 再执行 宏任务。

       a、宏任务有:setTimeout ,setInterval ,setImmediate ,I/O ,UI rendering。

       b、微任务有:process.nextTick,Promise,注意process.nextTick是在Node环境中具有的。

    3、宏任务和微任务到底是什么:https://www.jianshu.com/p/bfc3e319a96b

       宏任务是由宿主发起的,而微任务由JavaScript自身发起

  • 相关阅读:
    JDK中的主要包
    package

    参数传值机制
    静态初始化块
    static 关键字
    this关键字
    开发中容易造成内存泄露的操作
    通用的分代垃圾回收机制
    JVM调优和Full GC
  • 原文地址:https://www.cnblogs.com/wfblog/p/9805146.html
Copyright © 2020-2023  润新知