Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回内部回调时Javascript映射的行为_Javascript_Array.prototype.map - Fatal编程技术网

返回内部回调时Javascript映射的行为

返回内部回调时Javascript映射的行为,javascript,array.prototype.map,Javascript,Array.prototype.map,我们通常在Javascript中使用“map”来获得一个新的和经过转换的数组。在这种情况下就不同了。 下面是一段来自服务工作者定义的代码。它旨在删除旧缓存并仅保留最新版本。 我主要关注“cacheNames.map”中发生的事情。因为,在某个时刻,我们将输入“if”语句。基本上,当一个旧的缓存已经存储时,一个新的缓存正在取代它。 我的问题是: 1-当“map”正在使用的回调中有一个“return”语句时会发生什么?i、 e.返回缓存。删除(缓存) 2-当第一次执行“返回”时,剩余的迭代是否会停止

我们通常在Javascript中使用“map”来获得一个新的和经过转换的数组。在这种情况下就不同了。
下面是一段来自服务工作者定义的代码。它旨在删除旧缓存并仅保留最新版本。

我主要关注“cacheNames.map”中发生的事情。因为,在某个时刻,我们将输入“if”语句。基本上,当一个旧的缓存已经存储时,一个新的缓存正在取代它。

我的问题是:
1-当“map”正在使用的回调中有一个“return”语句时会发生什么?i、 e.返回缓存。删除(缓存)
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);
      }
    })
  )
})

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

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


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

“我们通常在Javascript中使用“map”来获得一个新的和经过转换的数组”-您在这里也是这样做的。数组被转换为一个
undefined
s的数组(当回调没有返回任何内容时)和删除承诺。我怀疑这两个问题都可以通过尝试运行代码(或类似的代码)来回答。“当“map”正在使用回调中的“return”语句时会发生什么?”-您似乎已经知道
map
是如何工作的(用于转换数组),所以您不应该自己回答这个问题吗?或者是什么让你觉得这会有不同的效果?谢谢大家。我现在明白了。在这种情况下,我们不会像在基本用途中那样保留新的转换数组。我们只是使用“映射”的“迭代”功能来检查一个键数组中是否满足条件。非常感谢您的快速响应。@jet2016不,您不仅仅使用迭代功能。您还可以使用新转换的数组作为
Promise.all
的参数,这一点很重要。例如,使用forEach将不起作用。