refactor(service-worker): avoid unnecessarily creating Promises in `Driver#deleteAllCaches()` (#40234)

This commit refactors `Driver#deleteAllCaches()` to use `Array#map()`
instead of `Array#reduce()` for running async operations in parallel.
This allows avoiding having to recursively wrap Promises with
`Promise.all()`.

PR Close #40234
This commit is contained in:
George Kalpakas 2021-01-08 13:59:34 +02:00 committed by atscott
parent b953a0c5a5
commit 2cf6fa2e9c
1 changed files with 10 additions and 12 deletions

View File

@ -722,18 +722,16 @@ export class Driver implements Debuggable, UpdateSource {
}
private async deleteAllCaches(): Promise<void> {
await (await this.scope.caches.keys())
// The Chrome debugger is not able to render the syntax properly when the
// code contains backticks. This is a known issue in Chrome and they have an
// open [issue](https://bugs.chromium.org/p/chromium/issues/detail?id=659515) for that.
// As a work-around for the time being, we can use \\ ` at the end of the line.
.filter(key => key.startsWith(`${this.adapter.cacheNamePrefix}:`)) // `
.reduce(async (previous, key) => {
await Promise.all([
previous,
this.scope.caches.delete(key),
]);
}, Promise.resolve());
const cacheNames = await this.scope.caches.keys();
const ownCacheNames =
cacheNames
// The Chrome debugger is not able to render the syntax properly when the
// code contains backticks. This is a known issue in Chrome and they have an
// open [issue](https://bugs.chromium.org/p/chromium/issues/detail?id=659515) for that.
// As a work-around for the time being, we can use \\ ` at the end of the line.
.filter(name => name.startsWith(`${this.adapter.cacheNamePrefix}:`)); // `
await Promise.all(ownCacheNames.map(name => this.scope.caches.delete(name)));
}
/**