zoukankan      html  css  js  c++  java
  • 写法小技巧:利用高阶函数、闭包作用域、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);
  • 相关阅读:
    12迭代器
    11(2)Vector(向量)
    11(1) LinkList ---链表
    11集合(Collection<E>) Arraylist
    10异常
    乘法计算过程的模拟
    10 Date详解
    详细的OA系统学习
    8 math类
    Java开发中的23种设计模式详解
  • 原文地址:https://www.cnblogs.com/liujinyu/p/13329787.html
Copyright © 2011-2022 走看看