출력으로 정수를 생성하는 ReactiveCommand
이 있습니다.구독 전에 ToProperty를 실행하십시오.
public ReactiveCommand<Unit, int> Calculate { get; }
이 명령의 최신 결과는 그 출력은 LatestValue
에 저장되고, ObservableAsPropertyHelper
private readonly ObservableAsPropertyHelper<int> _latestValue;
public int LatestValue => _latestValue.Value;
...
Update.ToProperty(this, vm => vm.LatestValue, out _latestValue);
Calculate
를 실행할 때마다 시간을 사용하여 변수에 저장됩니다. 나는 이런 식으로 뭔가 할 때 는 그러나, 나는 문제가 발생이 관찰에서
anotherObservable.SelectMany(_ => Calculate.Execute())
.Select(value => value == LatestValue);
결과는 선택() ObservableAsPropertyHelper
업데이트 LatestValue
전에 실행되기 때문에 항상 false 것 같다을, 그래서 LatestValue
는 오래된 값이 있습니다.
관찰 가능이 값을 생성 할 때 함수를 실행하려고하는데이 함수는 Calculate
의 최신 값이 필요하기 때문에 문제가됩니다. 관측 대상에서 새 값을 전달할 수 없으며 변수에 있어야합니다.
Calculate
을 실행 한 다음 WhenAnyValue
을 사용하여 LatestValue
의 업데이트를 기다리는 것과 관련하여 생각했습니다. 그러나 이것은 이전 실행으로 인해 업데이트가 발생할 수 있으며 일반적으로 잘못된 디자인 인 것처럼 보이기 때문에 오류가 발생하기 쉽습니다.
이 문제를 해결하는 가장 좋은 방법은 무엇입니까?
최신 값을 저장하려는 의도는 무엇입니까? 'Calculate'를 연속적으로 여러 번 실행하는 경우 최신 값을 얻을 수 있도록 보장합니까? –
실제로 Calculate는 뷰 모델의 유효성을 검사하는 함수입니다. 이 함수는 꽤 비싸고 viewmodel의 유효성은 코드의 여러 위치에서 검사됩니다. 코드베이스의 일부 함수는 반응이 없으므로 관찰 가능을 사용할 수 없지만 최신 값이 필요합니다. – Wouter