You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							48 lines
						
					
					
						
							1.5 KiB
						
					
					
				
			
		
		
	
	
							48 lines
						
					
					
						
							1.5 KiB
						
					
					
				"use strict"; | 
						|
Object.defineProperty(exports, "__esModule", { value: true }); | 
						|
var Observable_1 = require("../Observable"); | 
						|
var Subscription_1 = require("../Subscription"); | 
						|
var iterator_1 = require("../symbol/iterator"); | 
						|
function scheduleIterable(input, scheduler) { | 
						|
    if (!input) { | 
						|
        throw new Error('Iterable cannot be null'); | 
						|
    } | 
						|
    return new Observable_1.Observable(function (subscriber) { | 
						|
        var sub = new Subscription_1.Subscription(); | 
						|
        var iterator; | 
						|
        sub.add(function () { | 
						|
            if (iterator && typeof iterator.return === 'function') { | 
						|
                iterator.return(); | 
						|
            } | 
						|
        }); | 
						|
        sub.add(scheduler.schedule(function () { | 
						|
            iterator = input[iterator_1.iterator](); | 
						|
            sub.add(scheduler.schedule(function () { | 
						|
                if (subscriber.closed) { | 
						|
                    return; | 
						|
                } | 
						|
                var value; | 
						|
                var done; | 
						|
                try { | 
						|
                    var result = iterator.next(); | 
						|
                    value = result.value; | 
						|
                    done = result.done; | 
						|
                } | 
						|
                catch (err) { | 
						|
                    subscriber.error(err); | 
						|
                    return; | 
						|
                } | 
						|
                if (done) { | 
						|
                    subscriber.complete(); | 
						|
                } | 
						|
                else { | 
						|
                    subscriber.next(value); | 
						|
                    this.schedule(); | 
						|
                } | 
						|
            })); | 
						|
        })); | 
						|
        return sub; | 
						|
    }); | 
						|
} | 
						|
exports.scheduleIterable = scheduleIterable; | 
						|
//# sourceMappingURL=scheduleIterable.js.map
 |