Notification.requestPermission()函数已从回调更改为基于承诺的版本。您可以在Mozilla documentation。
中看到这一点为当前浏览器选择正确版本的最佳做法是什么?我试过这样的事情:
function callback(value) {
// Do something
}
Notification.requestPermission(callback).then(callback);
如果存在承诺,这是有效的。有时回调会被触发两次。有没有办法预先检查,哪个是我需要的回调的正确版本?
答案 0 :(得分:0)
我自己找到了解决方案。我不知道,如果有更好的方法。
var promise;
var calledBack = false;
if(!Notification || Notification.permission === 'denied')
alert('Notification had been denied');
else if(Notification && Notification.permission !== 'granted') {
function callback(result) {
if(!calledBack) {
calledBack = true;
if(result === 'granted') {
// Do something
}
}
}
promise = Notification.requestPermission(callback);
if(promise && typeof promise.then === 'function')
promise.then(callback);
}

回调检查是否已被调用。如果requestPermission返回带有函数"然后"。
的promise,则使用promise