2016-02-02 6 views
0

Я пытаюсь получить уведомление об ошибке, дросселируемое, вызываемое не чаще одного раза в секунду. По какой-то причине, это никогда не вызывается, даже несмотря на то, что notificationErrorThrottled.Почему моя функция не дросселируется?

var notificationError = function() { 
    console.log(`title: ${notification_title}; body: ${notification_body}`) 
    Notifications.error(notification_title, notification_body); 
}; 

global.notificationErrorThrottled = function (title, body) { 
    global.notification_title = title; 
    global.notification_body = body; 
    _.throttle(notificationError, 1000, {trailing: false}); 
} 

Вот аналогичный код, который работает (с _.once вместо _.throttle):

var notificationUS = function() { 
    Notifications.warn('US style?', "If you want to use moneylines, prefix them with '+' or '-'. Otherwise they are considered decimal odds."); 
}; 

global.notificationUSonce = _.once(notificationUS); 

Это, как я называю глобальные функции из другого файла:

notificationUSonce(); 
notificationErrorThrottled('Nope.', "Please check your input."); 

ответ

1

Подчеркивание _.throttle вернет новую функцию, которую вы должны вызвать. Точно так же, как и с notificationUSonce().
Прямо сейчас вы никогда не называете фактическую дроссельную версию notificationError().

var throttledFunction = _.throttle(notificationError, 1000, {trailing: false}); 

global.notificationErrorThrottled = function (title, body) { 
    global.notification_title = title; 
    global.notification_body = body; 
    throttledFunction(); 
} 
+0

Да, я бы не догадался, что через миллион лет. Спасибо друг. Работает код. –

Смежные вопросы