我们通常在Javascript中使用“地图”来获取新的转换后的数组。在这种情况下是不同的。
这是来自Service Worker定义的一段代码。它旨在删除旧的缓存并仅保留最新版本。
我主要关注“ cacheNames.map”内部发生的情况。因为在某些时候,我们将输入“ if”语句。基本上,当旧的缓存已全部保存时,新的缓存将取代它。
我的问题是:
1-当“ map”正在使用的回调中有“ return”语句时,会发生什么?即返回caches.delete(cache)
2-第一次执行“返回”时,剩余的迭代会停止吗?
caches.keys().then(cacheNames => {
return Promise.all(
cacheNames.map(cache => {
if (cache !== cacheName) {
console.log('Service Worker: Clearing Old Cache');
return caches.delete(cache);
}
})
)
})
答案 0 :(得分:1)
在回调内部或外部的行为相同。
map
返回基于旧列表的新列表。映射函数内部的return
决定替换元素(在这种情况下为cache
)。如果没有使用return
显式返回任何内容,则将隐式返回undefined
。
不,return
对map
的其余迭代没有影响。同样,它仅决定新元素的值。