我目前正在编写一个 WebSocket 客户端。我需要按顺序执行一些功能。
目前我是这样做的
- 连接到服务器
- 然后设置一个监听器。
- 向侦听器添加条件语句。(检查响应 ID 是否匹配请求 ID)
- 发送带有 id 的请求一
- 如果响应 id 与请求 One Id 匹配,则处理请求
- 发送请求二
- 重复
这使得顺序动作看起来像这样
_channel.stream.listen((response) {
if(response.id == requestOne.id) {
handleRequestOneResponse(response);
}
if (response.id == requestTwo.id){
handleRequestTwoResponse(response);
}
...
});
sendActionOneRequest();
handleRequestOneResponse() {
// Some processing
sendActionTwoRequest();
}
handleRequestTwoResponse() {
// some processing
sendActionThreeRequest();
}
我想做的是
设置异步函数将请求发送到 WebSocket 服务器。暂停异步函数的执行。等到来自服务器的匹配响应完成异步功能。
这将允许我编写一系列动作,例如
await actionOne();
await actionTwo();
await actionThree();
我想我可以在每个action
函数中设置和销毁一个流侦听器,但我不知道如何在退出之前等待特定的响应。
另一方面,我认为我什至可以在外部使用现有的侦听器,但我仍然无法弄清楚要等到特定的响应进来后再继续前进。
因为它是我必须跳过每个函数来找出另一个之后的内容,并且有超过 5 个请求必须按顺序发送。