| 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(); | 
|         } | 
|       } | 
|     }); | 
|   }); | 
| } |