promise.resolve()缓存技巧

384 阅读1分钟

1. 利用promise API来实现一个缓存机制

2. 其实resolve()这个api就像一个语法糖, 可以改变状态

promise.resolve === functiion (value) { 
    new promsie(resolve => {
        resolve(value);
    })
}

3.接着我们看一个缓存的思想

// 封装一个请求函数
function query(url) {
    let cache = query.cache || (query.cache = new Map()) // 给函数query, 定义一个缓存, 为了方便设置为map类型, 这里函数也是对象, 随意可以直接给query加一个属性
    if (cache.has(name)) {
        return Promise.resolve(cache.get(name)) // 利用resolve直接改变promise的状态
        console.log('走缓存了')
    }
    return axios(url).then(res => {
        cache.set('name', res)
        console.log('没走缓存')
        return res
    })
}