2016-07-25 1 views
0

Есть ли хороший способ получить аналогичное поведение для _.debounce, но с той разницей, что каждый измененный аргумент выполняется один раз? например:Подчеркивание 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. 

ответ

0

Fo отсутствием лучшего решения, я пришел с этим:

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