flutter - 我在 onData 中有一个带有暂停操作的 Dart StreamSubscription。事件是否可以在回调和暂停之间开始?
问题描述
我正在尝试让回调同步启动和解决。
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 将返回的内容:
调用fiveSeconds,调用twoSeconds,它们同时解决。
Start fiveSeconds
Start twoSeconds
1
1
2
2
End twoSeconds
3
4
5
End fiveSeconds
profileStreamSubscription.onData((message) async {
假设在暂停操作发生之前和profileStreamSubscription.pause();
开始另一个事件之间会发生 onData 事件
吗?
这将返回如下内容:
调用fiveSeconds,twoSeconds在暂停之前中断fiveSeconds,同步解决但顺序错误。
Start twoSeconds
1
2
End twoSeconds
Start fiveSeconds
1
2
3
4
5
End fiveSeconds
解决方案
推荐阅读
- r - 我正在尝试使用线性回归添加平滑的趋势线,帮助我获得时间序列数据
- c# - 如何使用屏幕分辨率缩放图像
- firebase - 如何在没有注册或登录尝试的情况下检查用户是否存在于 Firebase 身份验证中?
- ios - 静态表格视图如何使最后一个可见行占据剩余空间
- android - Jetpack Compose,使用新的 Activity 还是新的 Navigation?
- hyperledger-fabric - 无法将 Composer 1.6.3 版本的 Composer 与 Fabric 1.2 一起使用,需要 v0.20 或更高版本
- zebra-printers - CPCL 自动送纸撕纸
- python - 如何对相同的索引进行分类
- reactjs - 如何让 Electron 应用使用临时存储
- javascript - why am I getting a `destructured parameter is undefined` when the console.log tells me that those are defined?