Skip to content

Commit 5d6339a

Browse files
committed
fix(subscribeToResult): update subscription to iterables
- update iteration logic same as IteraterObservable, can actually iterate objects
1 parent c03dabd commit 5d6339a

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

src/util/subscribeToResult.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,19 +56,22 @@ export function subscribeToResult<T>(outerSubscriber: OuterSubscriber<any, any>,
5656
});
5757
return destination;
5858
} else if (typeof result[$$iterator] === 'function') {
59-
for (let item of <any>result) {
60-
destination.next(<any>item);
59+
const iterator = <any>result[$$iterator]();
60+
do {
61+
let item = iterator.next();
62+
if (item.done) {
63+
destination.complete();
64+
break;
65+
}
66+
destination.next(item.value);
6167
if (destination.closed) {
6268
break;
6369
}
64-
}
65-
if (!destination.closed) {
66-
destination.complete();
67-
}
70+
} while (true);
6871
} else if (typeof result[$$observable] === 'function') {
6972
const obs = result[$$observable]();
7073
if (typeof obs.subscribe !== 'function') {
71-
destination.error('invalid observable');
74+
destination.error(new Error('invalid observable'));
7275
} else {
7376
return obs.subscribe(new InnerSubscriber(outerSubscriber, outerValue, outerIndex));
7477
}

0 commit comments

Comments
 (0)