RedPanda
RedPanda

Reputation: 49

Using setInterval and JavaScript

I'm working with Notification API but i can't make it work with SetInterval(), can somebody point out what i'm doing wrong. As long as i click the event, the notification only displays once. Here is my code:

document.addEventListener('DOMContentLoaded', function() {
document.getElementById('notifyBtn').addEventListener('click', function() {

    if (!('Notification' in window)) {
        alert('Web Notification is not supported');
        return;
    } else {
        setInterval(Notification.requestPermission(function(permission) {
            var notification = new Notification("Hi there!", {
                body: 'I am here to talk about HTML5 Web Notification API',
                icon: 'icon.png',
                dir: 'auto'
            });
            setTimeout(function() {
                notification.close();
            }, 2000);
        }),5000);

    }
    ;
});
});

I'm really stucked here, please halp.

Upvotes: 1

Views: 581

Answers (3)

Robo Robok
Robo Robok

Reputation: 22683

You need to pass valid callback to setInterval(). Instead, you are passing the result of some method. Try this:

setInterval(function () {
    Notification.requestPermission(function(permission) {
        var notification = new Notification("Hi there!", {
            body: 'I am here to talk about HTML5 Web Notification API',
            icon: 'icon.png',
            dir: 'auto'
        });
        setTimeout(notification.close, 2000);
    })}, 5000);

Bonus: see how I simplified your setTimeout callback, by just passing the notification.close method itself, instead of calling it in anonymous function. Much cleaner.

Upvotes: 4

Sacreyoule
Sacreyoule

Reputation: 180

I found something like this :

document.addEventListener('DOMContentLoaded', function() {
document.getElementById('notifyBtn').addEventListener('click', function() {
    if (!('Notification' in window)) {
        alert('Web Notification is not supported');
        return;
    } else {
        setInterval(notify, 5000);
    }
});
function notify() {
    Notification.requestPermission(function(permission) {
            var n = new Notification("Hi there!", {
                body: 'I am here to talk about HTML5 Web Notification API',
                icon: 'icon.png',
                dir: 'auto'
            })
            setTimeout(function(){n.close()}, 2000)
        })

}

Upvotes: 0

Andrey
Andrey

Reputation: 658

Wrap your method in anonymous function

document.addEventListener('DOMContentLoaded', function() {
document.getElementById('notifyBtn').addEventListener('click', function() {

    if (!('Notification' in window)) {
        alert('Web Notification is not supported');
        return;
    } else {
        setInterval(function(){Notification.requestPermission(function(permission) {
            var notification = new Notification("Hi there!", {
                body: 'I am here to talk about HTML5 Web Notification API',
                icon: 'icon.png',
                dir: 'auto'
            });
            setTimeout(function() {
                notification.close();
            }, 2000);
        })},5000);

    }
    ;
});
});

Upvotes: 0

Related Questions