2017-02-21 16 views
5

私は、Observablesをasync/awaitのタスクの代わりに使用することについて、いくつかの議論を行ってきました。私は現在、ほとんど独占的にCreateFromTaskを利用しています。私は、CreateFromTaskの代わりにCreateFromObservableを使用している理由を理解しようとしています。ReactiveCommand.CreateFromTaskとReactiveCommand.CreateFromObservable

もしそうなら、CreateFromTaskをCreateFromObservableに変換する最良の方法は何でしょうか。

答えて

4

CreateFromTaskは、私たちが主にタスクベースの世界に住んでいるため、実際にはヘルパーとしてしか存在しません:-)完全に反応する世界では、使用するすべてのライブラリがObservablesを公開します。その後Observablesを終わらせることができます。しかし、RxUIには、TasksをCommandに簡単に取り込むためのヘルパーがいくつか含まれています。

あなたがここに https://github.com/reactiveui/ReactiveUI/issues/1245

を見ればあなただけのこれらのヘルパーを取り除くためにも議論があります表示されます。

あなたが「CreateFromTask」のコードを見ればそれがないすべてが観測に変換する作業に)ToObservble(呼び出し、コードはその質問にとても

https://github.com/reactiveui/ReactiveUI/blob/develop/src/ReactiveUI/ReactiveCommand.cs#L418

CreateFromObservable

を呼び出しています私は仕事にToObservableを呼び出すことがそれを変換する最良の方法だと言うでしょう。あなたは、この使用して文

using System.Reactive.Threading.Tasks 

を含める必要があります私は正常にやっていることは、単にファサードにすべての私のタスクベースのライブラリをラップし、ToObervableを使用してそれらを公開しています。反応的な解決策をとるならば、混合とマッチングに反対するObservablesの土地での作業は、より簡単になります。

CreateFromTaskを超えてCreateFromObservableの背後にある理由は、あなたのソリューションが主に反応すると仮定しているため、ライブラリが主な目的になると考えていることです。これらのコマンドを作成するための他の方法は、実際にはヘルパーであり、最終的にCreateFromObservableに行く方法です。

+1

ありがとうございます。それは実際に多くをクリアするのに役立ちます。 –

関連する問題