async/await
구문을 사용하는 동안 서비스 직원의 약속에 어려움을 겪고 있습니다.
다음 상황 : 푸시 알림을 받았으며 클릭 이벤트를 처리하려고합니다. then
및 catch
과 함께 "이전"구문을 사용하면 클라이언트 목록에서 iteratore를 수행 할 수 있습니다. async/await
으로 내가 선호하는 방식을 사용하면 아무 것도하지 않습니다. @Crice 및 @Keith에서비스 종사자 : 비동기가 waituntil과 결합하여 제대로 작동하지 않습니다.
self.addEventListener("notificationclick", event => {
// is working
event.waitUntil(self.clients.matchAll().then(clientList => {
console.log(clientList);
}));
// is not working
event.waitUntil(async() => {
const clientList = await self.clients.matchAll();
console.log(clientList);
});
});
'waitUntil'처럼 보이는 것이 대기열이며 기능이 아닙니다. 어쩌면 비동기 함수를 즉시 호출하면 작동 할 수 있습니다. 예 :'event.waitUntil ((async() => {...})())' – CRice
@CRice가 정확합니다. 당신은 IIF 방식으로 할 수 있지만, 좀 더 쉽게 이해할 수있는 방법은 비동기식 물건을 모두 가지고있는'getClients'라는 함수를 생성 한 다음'event.waitUntil (getClients()); – Keith
@CRice와 @Keith 두 분 모두 감사합니다. 너는 완전히 옳다. 위로 몇 가지를 섞은 ... 나는 그것이 "약속을 반환 할 것임을 알았 기 때문에"외부 "비동기 함수를 사용하려고했습니다. 하지만 실제로 방금 참조 (waitUntil (getClients)'vs'waitUntil (getClients())'를 대신 전달했습니다. – dkirchhof