【发布时间】:2021-07-08 18:36:33
【问题描述】:
我需要能够通过 websocket 发送请求并等待它们链接典型查询。
因为 websocket 不会立即发送响应,所以我使用 websocket 上的 onmessage 属性来监听响应。每个请求都带有一个唯一的 ID,以便在收到响应时可以将其映射回发送它的请求。
所以现在,代码看起来或多或少是这样的
_requests = new Map();
public exec(req) {
req = {
payload: {/* stuff */}
request_id: /* unique ID */
};
_requests.set(req.request_id, /*some_callback like () => {} */)
ws.send(req)
}
// receive
public receive() {
ws.onmessage = (e) => {
response = e.data
requestId = response.request_id
callback = this._requests(requestId)
callback(response)
this._requests.delete(requestId)
}
这是不完整的...因为我希望 exec 返回一个承诺,即当从请求数据的组件调用时我可以 await。
【问题讨论】: