如何为Notification.requestPermission()函数选择正确的回调?

时间:2016-07-20 07:37:38

标签: javascript

Notification.requestPermission()函数已从回调更改为基于承诺的版本。您可以在Mozilla documentation

中看到这一点

为当前浏览器选择正确版本的最佳做法是什么?我试过这样的事情:

 function callback(value) {
   // Do something
 }

 Notification.requestPermission(callback).then(callback);

如果存在承诺,这是有效的。有时回调会被触发两次。有没有办法预先检查,哪个是我需要的回调的正确版本?

1 个答案:

答案 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