yield*
вернет все элементы в потоке, пока этот поток не закончится. Потоки Firestore создаются таким образом, что они никогда не будут закрыты (по крайней мере, до тех пор, пока они не будут собраны мусором). Таким образом, ваш метод mapEventToState
теперь находится в состоянии, когда он всегда будет ожидать следующего элемента в магазине.
Вместо использования yield*
, вы можете просто использовать yield
и вернуть единственное значение, вызвав .first
в потоке.
yield repo.observeData().map((data) => DataLoadSuccess(data)).first;