• 写法小技巧:利用高阶函数、闭包作用域、defineProperty定义get、执行一次的函数| 获取接口数据并缓存


    这样直接读取obj.name属性,就能以普通调用实现async/await值,异步进程,预加载缓存

    可用作异步加载非必须依赖

    注意:这样的写法不能保证调取时,已经获取到数据。

    var obj = {}
    
    // H_fetchApiData 高阶工厂函数,返回getApiData 请求api获取数据
    let H_fetchApiData = (dynamicName) =>{
      let getApiData = ()=>{
        let apiData={}
        setTimeout(()=>{
          apiData={code:1,data:1}
        },100)
        getApiData = ()=> apiData
        return apiData
      }
      getApiData()
      return getApiData
    }
      
    let getApiData = H_fetchApiData()
    Object.defineProperty(obj,'name',{
      get(){
        return getApiData()
      }
    })
    
    console.log(obj.name)
    setTimeout(() => {
      console.log(obj.name)
    }, 200);
  • 相关阅读:
    文件夹打开对话框
    文件打开对话框
    HOOK函数(二)——全局HOOK
    HOOK函数(一)——进程内HOOK
    抓包
    List 访问
    坑爹的EL 表达式。
    tomcat 虚拟目录的安全问题
    框架
    程序员相关词汇
  • 原文地址:https://www.cnblogs.com/liujinyu/p/13329787.html
Copyright © 2020-2023  润新知