Я пытаюсь использовать 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);
}
The 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);
}
});
Я проверил этот код, и я вижу, что он отправляет сообщения веб-сокета на сервер, я вижу ответы.
Как мнепередать результаты из веб-сокета При условии обратного вызова done
?