keferjs流debounce,但不在keycode上== 13(返回)

时间:2016-03-04 00:45:02

标签: throttling kefir.js

我想在除退货之外的所有关键印刷机上进行辩护。我尝试过以下但是它并没有去抖。

some_stream.flatMap((event) => {
                            if(event.keyCode == 13){
                                return Kefir.stream(emitter => {
                                    emitter.emit(event.target.value);
                                });
                            }else{
                                const debounced_stream = Kefir.stream(emitter => {
                                    emitter.emit(event.target.value);
                                }).debounce(1000)
                                return debounced_stream;
                            }

                        })

1 个答案:

答案 0 :(得分:0)

我能够用下面的代码块解决这个问题,除了13之外,每个keyCode都会去抖:

const search_stream = Kefir.fromEvents(self.search_keyword._tag.input, 'keyup');
                const debounced_search_stream = search_stream
                        .filter((event) => {
                            return event.keyCode != 13;
                        })
                        .map((event) => {
                            return event.target.value;
                        })
                        .debounce(1000);
                const not_debounced_search_stream = search_stream
                        .filter((event) => {
                            return event.keyCode == 13;
                        })
                        .map((event) => {
                            return event.target.value;
                        })
                Kefir.merge([debounced_search_stream, not_debounced_search_stream]).onValue(keyword => {
                    if(keyword !== null){
                        if (keyword) {
                            //do something
                        }
                    }
                })