如何使用RxJS Observables / Subjects包装此jquery插件的回调函数?

时间:2019-04-16 00:25:58

标签: javascript jquery callback rxjs observable

我正在尝试将https://github.com/devbridge/jQuery-Autocomplete与Websockets和RxJS一起使用。

通常,lookup AJAX函数如下所示:

lookup: await (query, done) => {
    // make ajax call
    const response = await fetch(// pass query str here);
    const respJson = await response.json();
    done(respJson);
}

query是输入的字符串,done是将结果传递给的回调函数。

我想将此功能包装在RxJS可观察对象或主题中,所以我可以做诸如反跳之类的事情。这是我到目前为止的内容:

const webSocketSubject = webSocket(`/ws/typeahead/`);
const subject = new Subject();

webSocketSubject.subscribe(console.log)

const debouncedSubject = subject.pipe(
    debounceTime(200)
);
debouncedSubject.subscribe((x) => {
    webSocketSubject.next({
        'payload': {
            'query': x,
        },
    });
    console.log(x);
});


 $('#id_my_input_field').autocomplete({
     lookup: (query, done) => {
         debouncedSubject.next(query);
     }
 });

我已经测试了此代码,并且可以看到它确实向服务器发送了websocket消息,可以看到响应。

如何将websocket主题的结果传递给done回调?

0 个答案:

没有答案