我正在尝试将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
回调?