1

我目前正在编写一个 WebSocket 客户端。我需要按顺序执行一些功能。

目前我是这样做的

  1. 连接到服务器
  2. 然后设置一个监听器。
  3. 向侦听器添加条件语句。(检查响应 ID 是否匹配请求 ID)
  4. 发送带有 id 的请求一
  5. 如果响应 id 与请求 One Id 匹配,则处理请求
  6. 发送请求二
  7. 重复

这使得顺序动作看起来像这样

_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 个请求必须按顺序发送。

4

0 回答 0