是否有異步運算符來獲取由兩個異步值(Async < _>)返回的值?選擇第一個異步結果
例如,給定兩個Async < _>值,其中一個A1在1秒後返回,A2在2秒後返回,則我需要A1的結果。
原因是我想要實現用於異步序列的交織的功能,所以,如果有「定義」像這樣兩個異步序列(與空間表示時間與大理石圖):
S1 = -+-----+------------+----+
S2 = ---+-------+----------+-----+
然後我想產生的作用就像這一個新的異步序列:
S3 = -+-+---+---+--------+-+--+--+
交錯S1,S2,S3 =
但有兩個這樣做,我可能需要一種異步選擇運算符來選擇選擇值。
我認爲這將會像Go中的「select」一樣,您可以從兩個通道獲取第一個可用值。
TPL有一個叫做Task.WhenAny的函數 - 我可能在這裏需要類似的東西。
我不確定你可以非常容易地從異步選擇中真正構建異步交錯(因爲你所描述的選擇必須運行A1和A2並丟棄A2,而你想使用它)。什麼是你的異步序列的類型? – 2014-09-02 16:13:03
您是否可以將消費者實現爲[MailboxProcessor](http://msdn.microsoft.com/en-us/library/ee370357.aspx),並讓S1和S2發佈消息給它? MailboxProcessor將以S3順序獲取消息。 – 2014-09-02 16:31:27
類型定義在這裏:http://tomasp.net/blog/async-sequences.aspx/。你是對的,我不想扔掉其他計算,我只是想按照他們完成的順序使用他們的結果。 – 2014-09-02 16:34:25