diff --git a/src/observables/IteratorObservable.ts b/src/observables/IteratorObservable.ts index 31bb3aa49d..fd21f3957b 100644 --- a/src/observables/IteratorObservable.ts +++ b/src/observables/IteratorObservable.ts @@ -2,7 +2,7 @@ import Scheduler from '../Scheduler'; import Observable from '../Observable'; import {root} from '../util/root'; -import {$iterator$} from '../util/Symbol_iterator'; +import $iterator$ from '../util/Symbol_iterator'; import tryCatch from '../util/tryCatch'; import {errorObject} from '../util/errorObject'; diff --git a/src/util/Symbol_iterator.ts b/src/util/Symbol_iterator.ts index 2baa08f8b8..e06ea76dab 100644 --- a/src/util/Symbol_iterator.ts +++ b/src/util/Symbol_iterator.ts @@ -1,9 +1,27 @@ import {root} from './root'; -// Shim in iterator support -export var $iterator$ = (typeof Symbol === 'function' && Symbol.iterator) || '_es6shim_iterator_'; +if (!root.Symbol) { + root.Symbol = {}; +} -// Bug for mozilla version -if (root.Set && typeof new root.Set()['@@iterator'] === 'function') { - $iterator$ = '@@iterator'; +if (!root.Symbol.iterator) { + if (typeof root.Symbol.for === 'function') { + root.Symbol.iterator = root.Symbol.for('iterator'); + } + // Bug for mozilla version + else if(root.Set && typeof new root.Set()['@@iterator'] === 'function') { + root.Symbol.iterator = '@@iterator'; + } else { + root.Symbol.iterator = '_es6shim_iterator_'; + } } + +export default root.Symbol.dispose; + +// // Shim in iterator support +// export var $iterator$ = (typeof Symbol === 'function' && Symbol.iterator) || '_es6shim_iterator_'; + +// // Bug for mozilla version +// if (root.Set && typeof new root.Set()['@@iterator'] === 'function') { +// $iterator$ = '@@iterator'; +// }