gpt4 book ai didi

dart - 使用 Stream.periodic 时如何取消 Stream?

转载 作者:行者123 更新时间:2023-12-01 04:37:01 36 4
gpt4 key购买 nike

我在取消使用 Stream.periodic 构造函数创建的流时遇到问题。下面是我尝试取消流。但是,我很难从内部作用域中提取“计数”变量。因此,我无法取消订阅。

import 'dart:async';

void main() {
int count = 0;
final Stream newsStream = new Stream.periodic(Duration(seconds: 2), (_) {
return _;
});

StreamSubscription mySubscribedStream = newsStream.map((e) {
count = e;
print(count);
return 'stuff $e';
}).listen((e) {
print(e);
});

// count = 0 here because count is scoped inside mySubscribedStream
// How do I extract out 'count', so I can cancel the stream?
if (count > 5) {
mySubscribedStream.cancel();
mySubscribedStream = null;
}
}

最佳答案

我宁愿使用 take(5)而不是检查 > 5然后取消

final Stream newsStream = new Stream.periodic(Duration(seconds: 2), (_)  => count++);

newsStream.map((e) {
count = e;
print(count);
return 'stuff $e';
}).take(5).forEach((e) {
print(e);
});

关于dart - 使用 Stream.periodic 时如何取消 Stream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51583042/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com