当我们 return 内部回调时 Javascript 映射的行为

Behavior of Javascript map when we return inside callback

我们通常在Javascript中使用"map"来得到一个新的和转换后的数组。在这种情况下是不同的。
这是一段来自 Service Worker 定义的代码。旨在删除旧缓存并仅保留最新版本。

我主要关注 "cacheNames.map" 内部发生的事情。因为,在某些时候,我们会输入"if"语句。基本上,当旧缓存已经存储时,新缓存将取代它。

我的问题是:
1- 当 "map" 正在使用的回调中有 "return" 语句时会发生什么?即 return caches.delete(缓存)
2-第一次执行"return"时,剩余的迭代会停止吗?

caches.keys().then(cacheNames => {
  return Promise.all(
    cacheNames.map(cache => {
      if (cache !== cacheName) {
        console.log('Service Worker: Clearing Old Cache');
        return caches.delete(cache);
      }
    })
  )
})

回调内部和外部的行为相同。

map returns 基于旧列表的新列表。映射函数中的 return 决定元素(在本例中为 cache )被替换为什么。在使用 return 未显式返回任何内容的情况下,将隐式返回 undefined

不,returnmap 的剩余迭代没有影响。同样,它只是决定新元素的值是什么。