Skip to content
This repository was archived by the owner on Apr 20, 2018. It is now read-only.

Commit d319bc5

Browse files
committed
2 parents 0b1e596 + 15a5e6c commit d319bc5

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

examples/d3/index.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,9 @@
217217
});
218218

219219
// Calculate the rate of updates over time
220-
var updateCount = updateStream.scan(0, function(value) {
220+
var updateCount = updateStream.scan(function(value) {
221221
return ++value;
222-
});
222+
}, 0);
223223

224224
var sampledUpdates = updateCount.sample(samplingTime);
225225
var totalUpdatesBeforeLastSample = 0;

src/core/linq/observable/spawn.js

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,42 @@
4545
function toObservable(obj) {
4646
if (!obj) { return obj; }
4747
if (Observable.isObservable(obj)) { return obj; }
48+
if (isArrayLike(result) || isIterable(result)) { return arrayToObservable.call(this, obj); }
49+
if (isPromise(obj) { return Observable.fromPromise(obj); })
4850
if (isGeneratorFunction(obj) || isGenerator(obj)) { return spawn.call(this, obj); }
4951
if (isFunction(obj)) { return thunkToObservable.call(this, obj); }
5052
return obj;
5153
}
5254

55+
function arrayToObservable (obj) {
56+
return Observable.from(obj)
57+
.map(toObservable, this)
58+
.toArray();
59+
}
60+
61+
function objectToObservable (obj) {
62+
var results = new obj.constructor(), Object.keys(obj), var observables = [];
63+
for (var i = 0, len = keys.length; i < len; i++) {
64+
var key = keys[i], observable = toObservable.call(this, obj[key]);
65+
if (observable && Observable.isObservable(observable)) {
66+
defer(observable, key);
67+
} else {
68+
results[key] = obj[key];
69+
}
70+
}
71+
return Observable.concat(observables).startWith(results);
72+
73+
function defer (observable, key) {
74+
results[key] = undefined;
75+
observables.push(new AnonymousObservable(function (o) {
76+
return observable.subscribe(function (next) {
77+
results[key] = next;
78+
o.onCompleted();
79+
});
80+
}));
81+
}
82+
}
83+
5384
function thunkToObservable(fn) {
5485
var self = this;
5586
return new AnonymousObservable(function (o) {

0 commit comments

Comments
 (0)