我正在尝试将NotificationError限制为每秒最多调用一次。由于某种原因,即使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.");

最佳答案

下划线_.throttle将返回您应该调用的新函数。与使用notificationUSonce()的方法相同。
现在,您永远不会调用notificationError()的实际限制版本。

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

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

关于javascript - 为什么我的功能没有节制?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35156485/

10-12 13:34