问题描述
我正在尝试让回调同步启动和解决。
fiveSeconds() async {
print("Start fiveSeconds");
print("1");
await Future.delayed(Duration(seconds: 1));
print("2");
await Future.delayed(Duration(seconds: 1));
print("3");
await Future.delayed(Duration(seconds: 1));
print("4");
await Future.delayed(Duration(seconds: 1));
print("5");
await Future.delayed(Duration(seconds: 1));
print("End fiveSeconds");
}
twoSeconds() async {
print("Start twoSeconds");
print("1");
await Future.delayed(Duration(seconds: 1));
print("2");
await Future.delayed(Duration(seconds: 1));
print("End twoSeconds");
}
profileStreamSubscription.onData((message) async {
profileStreamSubscription.pause();
if (message == "send") {
await fiveSeconds();
profileStreamSubscription.resume();
}
if (message == "send2") {
await twoSeconds();
profileStreamSubscription.resume();
}
});
调用fiveSeconds,调用twoSeconds,它们按顺序同步解析。
Start fiveSeconds
1
2
3
4
5
End fiveSeconds
Start twoSeconds
1
2
End twoSeconds
不是这个,vv 是没有 pause() 或 resume() 的 StreamSubscription 会返回的:
Start fiveSeconds
Start twoSeconds
1
1
2
2
End twoSeconds
3
4
5
End fiveSeconds
假设 onData 事件可能发生在
profileStreamSubscription.onData((message) async {
和 profileStreamSubscription.pause();
在暂停操作发生之前启动另一个事件?
这将返回如下内容:
调用fiveSeconds,twoSeconds在暂停前中断5Seconds,同步解析但顺序错误。
Start twoSeconds
1
2
End twoSeconds
Start fiveSeconds
1
2
3
4
5
End fiveSeconds
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)