KingNET.WebUI/Scripts/linqjs/bindings/linq.rx.js
(完整代码) 1KB// binding for RxJS
// ToObservable / ToEnumerable
(function (Enumerable)
{
Enumerable.prototype.ToObservable = function (scheduler)
{
/// <summary>Converts an enumerable sequence to an observable sequence.</summary>
/// <param type="Optional:Rx.Scheduler" name="scheduler">Rx.Scheduler. Default is CurrentThread.</param>
var source = this;
if (scheduler == null) scheduler = Rx.Scheduler.CurrentThread;
return Rx.Observable.CreateWithDisposable(function (observer)
{
var disposable = new Rx.BooleanDisposable();
var enumerator = source.GetEnumerator();
scheduler.ScheduleRecursive(function (self)
{
try
{
if (!disposable.GetIsDisposed() && enumerator.MoveNext())
{
observer.OnNext(enumerator.Current());
self();
}
else
{
enumerator.Dispose();
observer.OnCompleted();
}
}
catch (e)
{
enumerator.Dispose();
observer.OnError(e);
}
});
return disposable;
});
}
Rx.Observable.prototype.ToEnumerable = function ()
{
/// <summary>Converts an observable sequence to an enumerable sequence. Notice:cold observable only</summary>
var obs = this;
return Enumerable.Empty()
.Let(function ()
{
var array = [];
obs.Subscribe(function (x) { array.push(x) }).Dispose();
return array;
});
}
})(this.Enumerable || this.jQuery.Enumerable);
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。