Как обернуть функцию обратного вызова этого плагина jquery с RxJS Observables / Subjects? - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь использовать 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?

...