underscore.js - 为每个不同的参数下划线反跳

标签 underscore.js

有没有一种好方法可以让 _.debounce 获得类似的行为,但区别在于每个更改的参数都会执行一次?例如:

foo = function (arg) {console.log(arg)}
lazy = _.debounce(foo,1000)

lazy("a")
lazy("a")
lazy("a")
lazy("a")
lazy("b")
a // with debounce "a" would not be printed
b // but i would like run the debounced function once for every changed arg.

最佳答案

由于缺乏更好的解决方案,我想出了这个:

args = {}
function markAllAsUnread(rooms) {
    _.each(rooms,function (roomname) {
        // Here i do my heavy work....
        console.log(roomname)
    })
    args = {}
}

markAllAsUnreadLazy = _.debounce(markAllAsUnread,2000)

function markAsUnread (arg) {
    args[arg] = arg // to unify the given args
    markAllAsUnreadLazy(args)
}


markAsUnread (1)
markAsUnread (1)
markAsUnread (123)
markAsUnread (123123)
markAsUnread (123123)
markAsUnread (123123)
markAsUnread (12334)

1
123
12334
123123

关于underscore.js - 为每个不同的参数下划线反跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38565806/

相关文章:

javascript - 克隆一个对象的元素并推送到它的自身

javascript - 基于带 lodash 下划线的键拆分 jsonarray

javascript - 使用下划线过滤 JSON

javascript - 如何使用 underscore.js 或 jQuery 检查对象是否有空数组

javascript - 使用 id 数组过滤和排序 Backbone 集合

javascript - 在js数组中查找下一个和上一个键

javascript - 通过它的 id 从数组中删除一个对象( Angular )

javascript - 主干错误未捕获类型错误 : Cannot call method 'each' of undefined?

templates - 如何让Jade停止HTML编码元素属性,并产生一个文字字符串值?

javascript - 检查字符串中的重复值