2017-10-03 5 views
0

우리가 각각의 API (Cache API, fetch API, IndexedDB APIPush API)을 확인해야합니까 serviceWorker 구현에 필요한, 캐시 API를 확인 하는가 노동자는 충분하니? 가장 좋은 방법은 무엇입니까?서비스 노동자를 구현하거나 서비스를 확인하기 전에 브라우저에서 지원 개별적으로 API를 가져오고 색인화 된 API 개별 지원 확인 이전

if('Cache' in window) {} 
if ('fetch' in window) {} 
if('indexedDB' in window) {} 
if('navigator' in window) {} 
if(navigator.onLine){} 

또는

if('serviceWorker in navigator)

충분히 의미?

서비스 근로자를 확인하기 위해 나중의 메서드가 이전 메서드를 내부적으로 호출한다고 가정 했습니까?

올바른 가정입니까?

기본값이 아닌 경우 무엇을 확인해야합니까?

+1

"나중에 서비스 관리자를 확인하기 전에 나중에 가져 오기, 푸시, 캐시를 확인하겠습니까?" 여기서 무슨 뜻인지 자세히 설명해 주시겠습니까? if ('serviceWorker in navigator)가 Service Worker 레지스터 파일에 포함되어 있으며 서비스 작업자 코드가 표시되기 전에 표시됩니다. 즉, 브라우저가 SW를 지원하는지 확인하기 전에 푸시/캐치/가져 오기 이벤트가 발생하지 않습니다. –

답변

0

if ('serviceWorker'in navigator)이면 충분합니다.

SW API를 구현하는 모든 브라우저는 Fetch, Caches 및 IndexedDB API도 구현합니다.

몇 가지 문제가 있습니다. Chrome 및 FF의 최신 버전은 비동기식/대기식을 지원하지만 예를 들어 삼성 인터넷은 지원하지 않습니다. SI는 SW를 지원하므로 SW에서 async/await를 사용하면 SI가 throw됩니다.