我对JSpromise 和Async很不满意,我面临着一个问题.
首先要做的是简化代码:
self.addEventListener('push', (event) => {
const data = event.data ? event.data.json() : {}
if (isClientFocused()) {
console.log('Don\'t need to show a notification.');
return;
}
event.waitUntil(
self.registration.showNotification(data.title, data)
)
});
function isClientFocused() {
return self.clients.matchAll({
type: 'window',
includeUncontrolled: true
})
.then((windowClients) => {
let clientIsFocused = false;
for (let i = 0; i < windowClients.length; i++) {
const windowClient = windowClients[i];
if (windowClient.focused) {
clientIsFocused = true;
break;
}
}
return clientIsFocused;
});
}
这个概念非常简单:我的函数isClientFocused
根据情况返回true
或false
,我想在我的事件侦听器的if中使用这个值作为条件.
我知道isClientFocused函数工作得很好,每次都会按预期返回结果,但在if条件下使用时,它总是记录Don't neet to show notification.
我想这只是一个实现问题,但我现在有点迷路了.
首先要感谢你的帮助.