ストリームのリストを取得して単一のストリームを出力する結合演算子を実装しようとしています。問題は、出力順序が入力順序と同じではないことです。StreamController.add は非同期なので、そうすると
sc1.add(1)
sc2.add(2)
sc2.add(3)
sc2.add(4)
sc1.add(5)
...
それぞれのストリーム ondata コールバックが呼び出される順序は、基本的に sc1 と sc2 のインターリーブである 1、2、5、3、4 のようなものです。この順序は実行全体でかなり一貫しているため、実装が単一のスレッドでラウンド ロビン ディスパッチを行っていると思われます。(これは dart VM 上にあります)
結合の実装で ondata コールバックが呼び出されるまでに順序がすでに混乱している場合、この結合を正しく実装できません。誰もこれを実装する方法について良いアイデアを持っていますか?