ExtendableEvent: waitUntil() 메서드

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.

참고 : This feature is only available in Service Workers.

ExtendableEvent.waitUntil() 메서드는 이벤트 디스패처에게 작업이 진행 중임을 알립니다. 이 메서드는 작업의 성공 여부를 감지하는 데에도 사용할 수 있습니다. 서비스 워커에서 waitUntil()은 프로미스가 완료될 때까지 작업이 진행 중임을, 그리고 작업이 완료되기를 원한다면 서비스 워커를 종료하지 말아야 한다는 것을 브라우저에게 알려줍니다.

서비스 워커install 이벤트는 waitUntil()을 사용하여 작업이 완료될 때까지 서비스 워커를 installing 단계에 머무르게 합니다. waitUntil()에 전달된 프로미스가 거부되는 경우, install은 실패로 간주되며 설치 중인 서비스 워커가 삭제됩니다. 이것은 주로 서비스 워커가 의존하는 모든 핵심 캐시가 성공적으로 채워질 때까지 서비스 워커가 설치된 것으로 간주되지 않도록 하는 데 사용됩니다.

서비스 워커activate 이벤트는 waitUntil()을 사용하여 waitUntil()에 전달된 프로미스가 완료될 때까지 fetchpush 같은 기능적인 이벤트를 일시 중지합니다. 이는 서비스 워커가 데이터베이스 스키마를 업데이트하고 오래된 caches를 삭제할 시간을 제공하므로, 다른 이벤트가 완전히 업그레이드된 상태에 의존할 수 있습니다.

waitUntil() 메서드는 처음에 이벤트 콜백 내에서 호출되어야 하지만, 그 이후에는 전달된 모든 프로미스가 완료될 때까지 여러 번 호출할 수 있습니다.

구문

js
waitUntil(promise)

매개변수

promise

이벤트의 수명을 연장하는 Promise 객체.

반환 값

없음 (undefined).

예제

서비스 워커의 install 이벤트 내에서 waitUntil()을 사용하는 예제.

js
addEventListener("install", (event) => {
  const preCache = async () => {
    const cache = await caches.open("static-v1");
    return cache.addAll(["/", "/about/", "/static/styles.css"]);
  };
  event.waitUntil(preCache());
});

명세서

Specification
Service Workers
# dom-extendableevent-waituntil

브라우저 호환성

BCD tables only load in the browser

같이 보기