美文网首页
Promise + memoize 高级模式

Promise + memoize 高级模式

作者: wyc0859 | 来源:发表于2021-01-25 18:25 被阅读0次

请求中常会遇见这样的情况:
适合结果不变且多次调用的函数或复杂的计算函数,如购物车计算
数据不变有不变的安全性,变有变的多适用性

    import memoize from 'memoizee';
    export default {  
        onShow(){ 
            this.ls_request()  
        }, 
        methods: {
                ls_request(){
                var funb = (async res=> {
                    let data=await this.$api.get("banner/banner_all_item") 
                    return data.data;
                }) 
                //仅封装,会请求2次
                // funb()
                // funb()
                
                //封装+缓存,只会请求一次,但缓存的请求结果如果是错误,后面使用也会不方便
                //let b=_.memoize(funb)    // lodash的memoize
                //b().then(re=>{
                //  console.log("re1",re)
                //}) 
                //b().then(re=>{
                //  console.log("re2",re)
                //})
                
                /*
                 *  接口请求,你应考虑操作可能失败的可能性。缓存了被拒绝的Promise,
                 *  则所有将来的调用都将以同样的失败 Promise 被拒绝!而memoize库解决了这个问题,示例变为:
                */
                let c=memoize(funb)
                c().then(re=>{
                    console.log("re33",re)
                }) 
                c().then(re=>{
                    console.log("re44",re)
                }) 
            },
        }
    } 

相关文章

网友评论

      本文标题:Promise + memoize 高级模式

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