是.net中的扩展方法是Action <T>的反应扩展

Mei*_*ome 1 action system.reactive

我有两个采用Action回调的异步方法.我想知道Rx是否有针对行动的扩展?

我的目标是等到两个回调被调用然后进行一些处理?

Ana*_*tts 5

这是来自Jesse和我即将出版的书,但是你走了,这是一个免费赠品:

public Func<T1, IObservable<TRet>> FromCallbackPattern<T1, TRet>(Action<T1, Action<TRet>> originalMethod)
{
    return new Func<T1, IObservable<TRet>>((param1) => {
        var subject = new AsyncSubject<TRet>();

        try {
            return originalMethod(param1, (result) => {
                subject.OnNext(result);
                subject.OnCompleted();
            });
        } catch (Exception ex) {
            subject.OnError(ex);
        }

        return subject;
    });
}
Run Code Online (Sandbox Code Playgroud)

以下是您使用它的方式:

// Here's a sample method that follows the callback pattern
public void DownloadPageTextAsync(string url, Action<string> callback);

var dlPageRx = FromCallbackPattern(DownloadPageTextAsync);

dlPageRx("http://www.jesseliberty.com")
    .Subscribe(pageText => Console.WriteLine(pageText));
Run Code Online (Sandbox Code Playgroud)