当我们在回调内部返回时,JavaScript映射的行为

时间:2018-08-25 12:37:25

标签: javascript array.prototype.map

我们通常在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);
      }
    })
  )
})

1 个答案:

答案 0 :(得分:1)

在回调内部或外部的行为相同。

map返回基于旧列表的新列表。映射函数内部的return决定替换元素(在这种情况下为cache)。如果没有使用return显式返回任何内容,则将隐式返回undefined

不,returnmap的其余迭代没有影响。同样,它仅决定新元素的值。