javascript - 如何用 RxJS Observables/Subjects 包装这个 jquery 插件的回调函数?
问题描述
我正在尝试将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 Subject 的结果传递给done
回调?
解决方案
推荐阅读
- escaping - Power Query:从内部有很多引号的长字符串中提取包含引号的子字符串
- java - 我该怎么做这个文件路径?
- python - 如何将一些新变量添加到张量流中加载的检查点?
- asp.net-core - 如何从中间件获取 ASPNETCORE OData 请求的路由数据?
- c - 修复与通用指针相关的警告
- angular - Angular5如何使用Http Observable
- bash - Linux shell:如何删除字符串中特定字符之前/之后的前导/尾随字符?
- javafx - 为什么 JavaFX PrintJob 无法正确打印节点的文本?
- azure - 'Microsoft.Compute' Azure 资源提供者永远不会完成'注册':
- binding - 在函数中重新分配全局变量而不传递变量名