현재 async
다음을 수행 하는 기능이 있습니다.
stream.listen()
스트림을 청취하는 함수를 호출 하고 제공하십시오.await
스트림이 첫 번째 결과를 얻을 수 있습니다.다음은 내 함수의 의사 코드입니다.
Future<void> initStream() async {
// initialize stream
var stream = getStream();
// listen
stream.listen((result) {
// do some stuff here
});
// await until first result
await stream.first; // gives warning
}
불행히도 호출 stream.first
은 스트림을 듣는 것으로 간주되며 스트림은 여러 청취자가 듣는 것을 허용하지 않습니까?
await Future.doWhile()
다음과 같은 것을 사용하여 다른 접근 방식을 시도했습니다 .
bool gotFirstResult = false;
Future<void> initStream() async {
var stream = getStream();
stream.listen((result) {
// do some stuff here
gotFirstResult = true;
});
await Future.doWhile(() => !gotFirstResult);
}
이것은 나를 위해 작동하지 않았고 여전히 이유를 모릅니다. 이 경우에 Future.doWhile()
제공된 함수 stream.listen()
가 호출되지 않았습니다.
스트림의 첫 번째 결과를 기다리는 방법이 있습니까? (제 질문을 충분히 설명하지 못해 죄송합니다. 필요한 경우 다른 세부 정보를 추가하겠습니다.) 미리 감사드립니다!
한 가지 방법은 스트림을 브로드 캐스트로 변환하는 것입니다.
var stream = getStream().asBroadcastStream();
stream.listen((result) {
// do some stuff here
});
await stream.first;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다