diff --git a/README.md b/README.md
index b323cfd7..351842af 100644
--- a/README.md
+++ b/README.md
@@ -539,7 +539,9 @@ public enum AwaitOperation
/// All values are sent immediately to the asynchronous method.
Parallel,
/// All values are sent immediately to the asynchronous method, but the results are queued and passed to the next operator in order.
- SequentialParallel
+ SequentialParallel,
+ /// Only the latest value is queued, and the next value waits for the completion of the asynchronous method.
+ Latest,
}
```
@@ -559,9 +561,9 @@ Additionally, the following time-related filtering methods can also accept async
| Name | ReturnType |
| --- | --- |
-| **Debounce**(this `Observable` source, `Func` throttleDurationSelector, `Boolean` configureAwait = true) | `Observable` |
-| **ThrottleFirst**(this `Observable` source, `Func` sampler, `Boolean` configureAwait = true) | `Observable` |
-| **ThrottleLast**(this `Observable` source, `Func` sampler, `Boolean` configureAwait = true) | `Observable` |
+| **Debounce**(this `Observable` source, `Func` throttleDurationSelector, `Boolean` configureAwait = true) | `Observable` |
+| **ThrottleFirst**(this `Observable` source, `Func` sampler, `Boolean` configureAwait = true) | `Observable` |
+| **ThrottleLast**(this `Observable` source, `Func` sampler, `Boolean` configureAwait = true) | `Observable` |
Concurrency Policy
---
@@ -576,8 +578,8 @@ It has `ObservableList`, `ObservableDictionary`, `ObservableHas
```csharp
Observable> IObservableCollection.ObserveAdd()
Observable> IObservableCollection.ObserveRemove()
-Observable> IObservableCollection.ObserveReplace()
-Observable> IObservableCollection.ObserveMove()
+Observable> IObservableCollection.ObserveReplace()
+Observable> IObservableCollection.ObserveMove()
Observable> IObservableCollection.ObserveReset()
```
@@ -1412,99 +1414,99 @@ For default time based operations that do not take a provider, `ObservableSystem
Factory methods are defined as static methods in the static class `Observable`.
-| Name(Parameter) | ReturnType |
-| --- | --- |
-| **Amb**(params `Observable[]` sources) | `Observable` |
-| **Amb**(`IEnumerable>` sources) | `Observable` |
-| **CombineLatest**(params `Observable[]` sources) | `Observable` |
-| **CombineLatest**(`IEnumerable>` sources) | `Observable` |
-| **Concat**(params `Observable[]` sources) | `Observable` |
-| **Concat**(`IEnumerable>` sources) | `Observable` |
-| **Concat**(this `Observable>` sources) | `Observable` |
-| **Create**(`Func, IDisposable>` subscribe, `Boolean` rawObserver = false) | `Observable` |
-| **Create**(`TState` state, `Func, TState, IDisposable>` subscribe, `Boolean` rawObserver = false) | `Observable` |
-| **Create**(`Func, CancellationToken, ValueTask>` subscribe, `Boolean` rawObserver = false) | `Observable` |
-| **Create**(`TState` state, `Func, TState, CancellationToken, ValueTask>` subscribe, `Boolean` rawObserver = false) | `Observable` |
-| **CreateFrom**(`Func>` factory) | `Observable` |
-| **CreateFrom**(`TState` state, `Func>` factory) | `Observable` |
-| **Defer**(`Func>` observableFactory) | `Observable` |
-| **Empty**() | `Observable` |
-| **Empty**(`TimeProvider` timeProvider) | `Observable` |
-| **Empty**(`TimeSpan` dueTime, `TimeProvider` timeProvider) | `Observable` |
-| **EveryUpdate**() | `Observable` |
-| **EveryUpdate**(`CancellationToken` cancellationToken) | `Observable` |
-| **EveryUpdate**(`FrameProvider` frameProvider) | `Observable` |
-| **EveryUpdate**(`FrameProvider` frameProvider, `CancellationToken` cancellationToken) | `Observable` |
-| **EveryValueChanged**(`TSource` source, `Func` propertySelector, `CancellationToken` cancellationToken = default) | `Observable` |
-| **EveryValueChanged**(`TSource` source, `Func` propertySelector, `FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **EveryValueChanged**(`TSource` source, `Func` propertySelector, `EqualityComparer` equalityComparer, `CancellationToken` cancellationToken = default) | `Observable` |
-| **EveryValueChanged**(`TSource` source, `Func` propertySelector, `FrameProvider` frameProvider, `EqualityComparer` equalityComparer, `CancellationToken` cancellationToken = default) | `Observable` |
-| **FromAsync**(`Func` asyncFactory, `Boolean` configureAwait = true) | `Observable` |
-| **FromAsync**(`Func>` asyncFactory, `Boolean` configureAwait = true) | `Observable` |
-| **FromEvent**(`Action` addHandler, `Action` removeHandler, `CancellationToken` cancellationToken = default) | `Observable` |
-| **FromEvent**(`Action>` addHandler, `Action>` removeHandler, `CancellationToken` cancellationToken = default) | `Observable` |
-| **FromEvent**(`Func` conversion, `Action` addHandler, `Action` removeHandler, `CancellationToken` cancellationToken = default) | `Observable` |
-| **FromEvent**(`Func, TDelegate>` conversion, `Action` addHandler, `Action` removeHandler, `CancellationToken` cancellationToken = default) | `Observable` |
-| **FromEventHandler**(`Action` addHandler, `Action` removeHandler, `CancellationToken` cancellationToken = default) | `Observable>` |
-| **FromEventHandler**(`Action>` addHandler, `Action>` removeHandler, `CancellationToken` cancellationToken = default) | `Observable>` |
-| **Interval**(`TimeSpan` period, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Interval**(`TimeSpan` period, `TimeProvider` timeProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **IntervalFrame**(`Int32` periodFrame, `CancellationToken` cancellationToken = default) | `Observable` |
-| **IntervalFrame**(`Int32` periodFrame, `FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Merge**(params `Observable[]` sources) | `Observable` |
-| **Merge**(`IEnumerable>` sources) | `Observable` |
-| **Merge**(this `Observable>` sources) | `Observable` |
-| **Never**() | `Observable` |
-| **NextFrame**(`CancellationToken` cancellationToken = default) | `Observable` |
-| **NextFrame**(`FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Range**(`Int32` start, `Int32` count) | `Observable` |
-| **Range**(`Int32` start, `Int32` count, `CancellationToken` cancellationToken) | `Observable` |
-| **Repeat**(`T` value, `Int32` count) | `Observable` |
-| **Repeat**(`T` value, `Int32` count, `CancellationToken` cancellationToken) | `Observable` |
-| **Return**(`T` value) | `Observable` |
-| **Return**(`T` value, `TimeProvider` timeProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Return**(`T` value, `TimeSpan` dueTime, `TimeProvider` timeProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Return**(`Unit` value) | `Observable` |
-| **Return**(`Boolean` value) | `Observable` |
-| **Return**(`Int32` value) | `Observable` |
-| **ReturnFrame**(`T` value, `CancellationToken` cancellationToken = default) | `Observable` |
-| **ReturnFrame**(`T` value, `FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **ReturnFrame**(`T` value, `Int32` dueTimeFrame, `CancellationToken` cancellationToken = default) | `Observable` |
-| **ReturnFrame**(`T` value, `Int32` dueTimeFrame, `FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **ReturnOnCompleted**(`Result` result) | `Observable` |
-| **ReturnOnCompleted**(`Result` result, `TimeProvider` timeProvider) | `Observable` |
-| **ReturnOnCompleted**(`Result` result, `TimeSpan` dueTime, `TimeProvider` timeProvider) | `Observable` |
-| **ReturnUnit**() | `Observable` |
-| **Throw**(`Exception` exception) | `Observable` |
-| **Throw**(`Exception` exception, `TimeProvider` timeProvider) | `Observable` |
-| **Throw**(`Exception` exception, `TimeSpan` dueTime, `TimeProvider` timeProvider) | `Observable` |
-| **Timer**(`TimeSpan` dueTime, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Timer**(`DateTimeOffset` dueTime, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Timer**(`TimeSpan` dueTime, `TimeSpan` period, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Timer**(`DateTimeOffset` dueTime, `TimeSpan` period, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Timer**(`TimeSpan` dueTime, `TimeProvider` timeProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Timer**(`DateTimeOffset` dueTime, `TimeProvider` timeProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Timer**(`TimeSpan` dueTime, `TimeSpan` period, `TimeProvider` timeProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Timer**(`DateTimeOffset` dueTime, `TimeSpan` period, `TimeProvider` timeProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **TimerFrame**(`Int32` dueTimeFrame, `CancellationToken` cancellationToken = default) | `Observable` |
-| **TimerFrame**(`Int32` dueTimeFrame, `Int32` periodFrame, `CancellationToken` cancellationToken = default) | `Observable` |
-| **TimerFrame**(`Int32` dueTimeFrame, `FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **TimerFrame**(`Int32` dueTimeFrame, `Int32` periodFrame, `FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **ToObservable**(this `Task` task, `Boolean` configureAwait = true) | `Observable` |
-| **ToObservable**(this `Task` task, `Boolean` configureAwait = true) | `Observable` |
-| **ToObservable**(this `ValueTask` task, `Boolean` configureAwait = true) | `Observable` |
-| **ToObservable**(this `ValueTask` task, `Boolean` configureAwait = true) | `Observable` |
-| **ToObservable**(this `IEnumerable` source, `CancellationToken` cancellationToken = default) | `Observable` |
-| **ToObservable**(this `IAsyncEnumerable` source) | `Observable` |
-| **ToObservable**(this `IObservable` source) | `Observable` |
-| **Yield**(`CancellationToken` cancellationToken = default) | `Observable` |
-| **Yield**(`TimeProvider` timeProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **YieldFrame**(`CancellationToken` cancellationToken = default) | `Observable` |
-| **YieldFrame**(`FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
-| **Zip**(params `Observable[]` sources) | `Observable` |
-| **Zip**(`IEnumerable>` sources) | `Observable` |
-| **ZipLatest**(params `Observable[]` sources) | `Observable` |
-| **ZipLatest**(`IEnumerable>` sources) | `Observable` |
+| Name(Parameter) | ReturnType |
+| --- | --- |
+| **Amb**(params `Observable[]` sources) | `Observable` |
+| **Amb**(`IEnumerable>` sources) | `Observable` |
+| **CombineLatest**(params `Observable[]` sources) | `Observable` |
+| **CombineLatest**(`IEnumerable>` sources) | `Observable` |
+| **Concat**(params `Observable[]` sources) | `Observable` |
+| **Concat**(`IEnumerable>` sources) | `Observable` |
+| **Concat**(this `Observable>` sources) | `Observable` |
+| **Create**(`Func, IDisposable>` subscribe, `Boolean` rawObserver = false) | `Observable` |
+| **Create**(`TState` state, `Func, TState, IDisposable>` subscribe, `Boolean` rawObserver = false) | `Observable` |
+| **Create**(`Func, CancellationToken, ValueTask>` subscribe, `Boolean` rawObserver = false) | `Observable` |
+| **Create**(`TState` state, `Func, TState, CancellationToken, ValueTask>` subscribe, `Boolean` rawObserver = false) | `Observable` |
+| **CreateFrom**(`Func>` factory) | `Observable` |
+| **CreateFrom**(`TState` state, `Func>` factory) | `Observable` |
+| **Defer**(`Func>` observableFactory) | `Observable` |
+| **Empty**() | `Observable` |
+| **Empty**(`TimeProvider` timeProvider) | `Observable` |
+| **Empty**(`TimeSpan` dueTime, `TimeProvider` timeProvider) | `Observable` |
+| **EveryUpdate**() | `Observable` |
+| **EveryUpdate**(`CancellationToken` cancellationToken) | `Observable` |
+| **EveryUpdate**(`FrameProvider` frameProvider) | `Observable` |
+| **EveryUpdate**(`FrameProvider` frameProvider, `CancellationToken` cancellationToken) | `Observable` |
+| **EveryValueChanged**(`TSource` source, `Func` propertySelector, `CancellationToken` cancellationToken = default) | `Observable` |
+| **EveryValueChanged**(`TSource` source, `Func` propertySelector, `FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
+| **EveryValueChanged**(`TSource` source, `Func` propertySelector, `EqualityComparer` equalityComparer, `CancellationToken` cancellationToken = default) | `Observable` |
+| **EveryValueChanged**(`TSource` source, `Func` propertySelector, `FrameProvider` frameProvider, `EqualityComparer` equalityComparer, `CancellationToken` cancellationToken = default) | `Observable` |
+| **FromAsync**(`Func` asyncFactory, `Boolean` configureAwait = true) | `Observable` |
+| **FromAsync**(`Func>` asyncFactory, `Boolean` configureAwait = true) | `Observable` |
+| **FromEvent**(`Action` addHandler, `Action` removeHandler, `CancellationToken` cancellationToken = default) | `Observable` |
+| **FromEvent**(`Action>` addHandler, `Action>` removeHandler, `CancellationToken` cancellationToken = default) | `Observable` |
+| **FromEvent**(`Func` conversion, `Action` addHandler, `Action` removeHandler, `CancellationToken` cancellationToken = default) | `Observable` |
+| **FromEvent**(`Func, TDelegate>` conversion, `Action` addHandler, `Action` removeHandler, `CancellationToken` cancellationToken = default) | `Observable` |
+| **FromEventHandler**(`Action` addHandler, `Action` removeHandler, `CancellationToken` cancellationToken = default) | `Observable>` |
+| **FromEventHandler**(`Action>` addHandler, `Action>` removeHandler, `CancellationToken` cancellationToken = default) | `Observable>` |
+| **Interval**(`TimeSpan` period, `CancellationToken` cancellationToken = default) | `Observable` |
+| **Interval**(`TimeSpan` period, `TimeProvider` timeProvider, `CancellationToken` cancellationToken = default) | `Observable` |
+| **IntervalFrame**(`Int32` periodFrame, `CancellationToken` cancellationToken = default) | `Observable` |
+| **IntervalFrame**(`Int32` periodFrame, `FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable` |
+| **Merge**(params `Observable[]` sources) | `Observable` |
+| **Merge**(`IEnumerable>` sources) | `Observable` |
+| **Merge**(this `Observable>` sources) | `Observable` |
+| **Never**() | `Observable` |
+| **NextFrame**(`CancellationToken` cancellationToken = default) | `Observable` |
+| **NextFrame**(`FrameProvider` frameProvider, `CancellationToken` cancellationToken = default) | `Observable