В TypeScript, в чем основное отличие между any[]
и Observable<any[])>
?
Каковы минусы и плюсы использования каждого из них?В чем разница между массивом и наблюдаемым массивом?
ответ
Наблюдатели используются для реализации шаблона наблюдателя. Вы можете подписаться на этот Observable, и вы получаете асинхронный эффект, когда данные Observable испускают данные.
Observable<any[])
представляет собой массив наблюдений.
Массив - это только объект, который может содержать более одного значения за раз.
Объект Observable представляет собой коллекцию на основе push.
Интерфейсы Observer и Observable обеспечивают обобщенный механизм для push-уведомления, также известного как шаблон наблюдателя . Объект Observable представляет объект, который отправляет уведомления (поставщик); объект Observer представляет класс , который принимает их (наблюдателя).
против
Массивы список подобных объектов, чьи прототип имеет методы для выполнения обхода и мутации операций. Исправлена ни длина массива JavaScript, ни типы его элементов.
Массив не является «переменной», хотя ему может быть присвоен один. Это особый тип ценности. –
Да, это описание было немного неточным. Я обновляю свой ответ. – muetzerich
Is Observable
За большой обзор различных типов значений в пространстве и времени, как единственного и множественного числа, см A General Theory of Reactivity.
Массив пространственный итерационный. Другими словами, это итерируемый (список вещей), который существует в одной точке пространства, и который вы можете и хотите потреблять прямо сейчас.
Наблюдаемый является временным итерационным. Другими словами, это список вещей, распространяемых с течением времени, которые вы потребляете по одному.
Возьмем конкретный пример, давайте рассмотрим, как итерацию по каждому из этих типов списков:
Массив:
const array: Array<number> = [1, 2, 3];
array.forEach(elt => console.log(elt));
Это синхронное и будет выполняться прямо сейчас.
Наблюдаемые:
const observable: Observable<number> = Observable.from([1, 2, 3]);
observable.subscribe(elt => console.log(elt));
Это асинхронный, и будет выполнять один элемент в то время, как они приходят в.
Однако, вы попросили немного другой вопрос, который разницы между массивом и наблюдаемыми массивами (которые, для ясности, мы должны избегать вызова «массива наблюдаемым», так как это может быть неверно истолкованный как означающий «массив наблюдаемых», что совсем другое, хотя, безусловно, полезно).
Разница в том, что, как я уже упоминал, массив представляет собой всего лишь один список значений за один момент времени. Наблюдаемым массивом является поток массивов, каждый «тик» дает целый новый новый массив.
Следовательно, используйте массив, если вам нужен только список элементов, сидящих там. Конечно, вы можете мутировать или преобразовывать массив, но это не меняет того факта, что в любой момент времени имеется только один единственный массив.
Используйте наблюдаемые массивы, если вы намерены продолжать получать новые версии массива - разные версии в разные моменты времени - и вы хотите «выталкивать» каждую новую версию в разные части вашей программы, которые в наблюдаемой терминологии будут «подписываться» на наблюдаемые и будут уведомляться каждый раз, когда они будут обновлены.
Чтобы ответить на ваш вопрос, то:
Какова главная разница между
any[]
иObservable<any[])>
?
Один из них представляет собой массив, а другой - наблюдаемый (поток) массивов.
Каковы недостатки и преимущества использования каждого из них?
Достоинства и недостатки в том, что если вы хотите массив, вы должны использовать массив. Если вы хотите наблюдать за массивами, вы должны использовать наблюдаемые массивы.
Обратите внимание, что хотя ваш вопрос относится к TypeScript, понятия массивов и наблюдаемых, включая наблюдаемые массивы, по существу не зависят от языка.
- 1. В чем разница между массивом и массивом?
- 2. Разница между массивом и массивом?
- 3. В чем разница между массивом и литеральным массивом в Smalltalk?
- 4. В чем разница между пустым массивом и пустым массивом?
- 5. В чем разница между массивом и динамическим массивом?
- 6. В чем разница между примитивным массивом и массивом ссылки.
- 7. В чем разница между массивом NumPy и простым массивом python?
- 8. В чем разница между массивом символов и одним линейным массивом?
- 9. В чем разница между вложенным массивом и ассоциативным массивом?
- 10. В чем разница между массивом [1] [2] и массивом [1,2]?
- 11. В чем разница между массивом и списком
- 12. В чем разница между массивом и ArrayList?
- 13. В чем разница между матрицей и массивом?
- 14. В чем разница между массивом и объектом?
- 15. В чем разница между словарем и массивом?
- 16. Разница между массивом и массивом в Flex
- 17. Разница между динамическим массивом и нормальным массивом
- 18. Разница между массивом и списком
- 19. разница между списком и массивом
- 20. Разница между массивом и указателем
- 21. разница между массивом и TimeSeries
- 22. Разница между ArrayList.TrimToSize() и массивом?
- 23. разница между массивом и таНос
- 24. Разница между массивом и коллекциями
- 25. Разница между массивом инициализациями
- 26. Разница между указателем и массивом в памяти
- 27. Разница между массивом nx1 и массивом n-элементов в Julia
- 28. queue.js: разница между массивом функций и массивом замыканий?
- 29. В чем разница между списком в списке и 2D-массивом?
- 30. В чем разница между массивом и перечислением в C?
Ну, я думаю, что это связано с тем, наблюдается ли массив или нет:). [Наблюдаемые массивы могут реагировать на изменение количества элементов в коллекции (массиве)] (http: //www.charlesnurse .com/Blog/Post/445/It-sa-Knockout-7-Adding-items-to-and-Removing-items-from-Observable-Arrays) – Michelangelo
Observable - это объект с любым шаблоном [], любым [ ] - это просто массив любого типа –
YOU