import { Observable } from '../Observable'; 
 | 
import { SchedulerLike } from '../types'; 
 | 
  
 | 
export function scheduleArray<T>(input: ArrayLike<T>, scheduler: SchedulerLike) { 
 | 
  return new Observable<T>((subscriber) => { 
 | 
    // The current array index. 
 | 
    let i = 0; 
 | 
    // Start iterating over the array like on a schedule. 
 | 
    return scheduler.schedule(function () { 
 | 
      if (i === input.length) { 
 | 
        // If we have hit the end of the array like in the 
 | 
        // previous job, we can complete. 
 | 
        subscriber.complete(); 
 | 
      } else { 
 | 
        // Otherwise let's next the value at the current index, 
 | 
        // then increment our index. 
 | 
        subscriber.next(input[i++]); 
 | 
        // If the last emission didn't cause us to close the subscriber 
 | 
        // (via take or some side effect), reschedule the job and we'll 
 | 
        // make another pass. 
 | 
        if (!subscriber.closed) { 
 | 
          this.schedule(); 
 | 
        } 
 | 
      } 
 | 
    }); 
 | 
  }); 
 | 
} 
 |