Skip to content

Commit 6baeb54

Browse files
committed
translation update
1 parent 9ee2e87 commit 6baeb54

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

Part 2 - Sequence Basics/1. Creating a sequence.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
# Создание последовательности
66

7-
В прошлых примерах мы использовали `Subject`'ы и вручную подавали на них значения чтобы создать последовательность. Мы делали так чтобы продемонстрировать некоторые ключевые моменты, а главное, самый основной в Rx метод, `subscribe`. В большинстве случаев `Subject` это не лучший способ создать новый `Observable`. В этом разделе мы рассмотрим более элегантные способы сделать это.
7+
В прошлых примерах мы использовали `Subject`'ы и вручную подавали на них значения чтобы создать последовательность. Мы делали так чтобы продемонстрировать некоторые ключевые моменты, в том числе основной Rx метод `subscribe`. В большинстве случаев `Subject` это не лучший способ создать новый `Observable`. В этом разделе мы рассмотрим более элегантные способы сделать это.
88

99
## Простые фабричные методы
1010

@@ -59,7 +59,7 @@ Subscription subscription = values.subscribe(
5959
);
6060
```
6161

62-
Код [выше](/tests/java/itrx/chapter2/creating/ObservableFactoriesExample.java) ничего не напечатает. Однако заметьте, что это не означает что программа блокируется. По-факту она просто мгновенно завершается.
62+
Код [выше](/tests/java/itrx/chapter2/creating/ObservableFactoriesExample.java) ничего не напечатает. Но это не означает что программа блокируется. По-факту она просто мгновенно завершается.
6363

6464
### Observable.error
6565

@@ -80,7 +80,7 @@ Error: java.lang.Exception: Oops
8080

8181
### Observable.defer
8282

83-
`defer` не создает новый `Observable`, но позволяет определить каким образом `Observable` будет создан при появлении подписчиков. Подумайте как бы вы создали `Observable` который будет выдавать текущее время. Так как значение только одно, кажется, что здесь нам поможет `just`.
83+
`defer` не создает новый `Observable`, но позволяет определить каким образом `Observable` будет создан при появлении подписчиков. Подумайте, как бы вы создали `Observable` который будет выдавать текущее время? Так как значение только одно, похоже, что здесь нам может помочь `just`.
8484

8585
```java
8686
Observable<Long> now = Observable.just(System.currentTimeMillis());
@@ -95,7 +95,7 @@ now.subscribe(System.out::println);
9595
1431443908375
9696
```
9797

98-
Обратите внимание как второй подписчик, подписавшись на секунду позже, получает такое же время. Это происходит потому что значение времени было вычислено лишь единажды: когда выполнение доходит до метода `just`. Однако в нашем случае мы хотим вычислять текущее время при каждой подписке. `defer` принимает функцию, которая возвращает `Observable` и будет выполнена для каждого нового подписчика.
98+
Обратите внимание как второй подписчик, подписавшись на секунду позже, получил такое же время. Это происходит потому что значение времени было вычислено лишь единажды: когда выполнение доходит до метода `just`. Однако в нашем случае мы хотим вычислять текущее время при каждой подписке. `defer` принимает функцию, которая возвращает `Observable` и будет выполнена для каждого нового подписчика.
9999

100100
```java
101101
Observable<Long> now = Observable.defer(() ->
@@ -119,7 +119,7 @@ now.subscribe(System.out::println);
119119
static <T> Observable<T> create(Observable.OnSubscribe<T> f)
120120
```
121121

122-
Все намного проще чем выглядит. Внутри всего лишь функция, которая принимает `Subscriber` для типа `T`. Внутри него мы можем вручную определить события, которые будут выдаваться подписчику.
122+
Все намного проще чем выглядит. Внутри всего лишь функция, которая принимает `Subscriber` для типа `T`. Внутри нее мы можем вручную определить события, которые будут выдаваться подписчику.
123123

124124
```java
125125
Observable<String> values = Observable.create(o -> {
@@ -142,7 +142,7 @@ Completed
142142

143143
Данный метод является рекомендуемым способом создания `Observable` в случае если ни один из других способов не подходит. Это похоже на то, как мы создавали `Subject` и вручную подавали на него значения, однако есть несколько важных отличий. В первую очередь, источних событий аккуратно инкапсулирован и отделен от другого кода. Во-вторых, `Subject`'ы имеют неочевидные опасности: любой кто имеет доступ к обьекту сможет изменить последовательность. Мы еще вернемся к этой проблеме позже.
144144

145-
Еще одним ключевым отличием от использования `Subject` является то, что код выполняется "lazily", только тогда когда прибывает новый подписчик. В примере выше, код выполняется _не_ в момент создания `Observable` (так как подписчиков еще нет), а в момент вызова метода `subscribe`. Это означает, что значения будет вычислены заново для каждого подписчика, как в `ReplaySubject`. Конечный результат похож на `ReplaySubject`, за исключением кеширования. С помощью `create` мы можем легко перенести выполнение в отделный поток, в то время как с `ReplaySubject` нам приходилось бы вручную создавать отдельные потоки для вычисления значений. Мы еще рассмотрим способы сделать выполнение метода `onSubscribe` параллельным.
145+
Еще одним ключевым отличием от использования `Subject` является то, что код выполняется "lazily", только тогда когда прибывает новый подписчик. В примере выше, код выполняется _не_ в момент создания `Observable` (так как подписчиков еще нет), а в момент вызова метода `subscribe`. Это означает, что значения будет вычислены заново для каждого подписчика, как в `ReplaySubject`. Конечный результат похож на `ReplaySubject`, за исключением кеширования. С помощью `create` мы также можем легко перенести выполнение в отделный поток, в то время как с `ReplaySubject` нам приходилось бы вручную создавать потоки для вычисления значений. Мы еще рассмотрим способы сделать выполнение метода `onSubscribe` параллельным.
146146

147147

148148
Вы уже могли заметить что любой из предыдущих `Observable` можно реализовать при помощи `Observable.create`. Наш пример для `create` эквивалентен `Observable.just("hello")`.
@@ -243,9 +243,9 @@ Observable<ActionEvent> events = Observable.create(o -> {
243243

244244
## Observable.from
245245

246-
Вы можете превратить любые входные данные в `Observable` при помощи `create`. Однако, для распространенных типов данных, существуют уже готовые решения.
246+
Вы можете превратить любые входные данные в `Observable` при помощи `create`. Однако, для распространенных типов данных, существуют уже готовые методы, призваные облегчить этот процесс.
247247

248-
`Future`'ы являются частью Java и вы должно быть сталкивались с ними во время работы с фреймворками, использующими многопоточность. Они являются менее мощным многопоточным инструментом чем Rx, так как возвращают только одно значение. Как правило, вы захотите превратить их в `Observable`.
248+
`Future`'ы являются частью Java и вы должно быть сталкивались с ними во время работы с фреймворками использующими многопоточность. Они являются менее мощным многопоточным инструментом чем Rx, так как возвращают только одно значение. Как правило, вы захотите превратить их в `Observable`.
249249

250250
```java
251251
FutureTask<Integer> f = new FutureTask<Integer>(() -> {
@@ -268,7 +268,7 @@ Received: 21
268268
Completed
269269
```
270270

271-
`Observable` выдает результат `FutureTask` по-готовности, после чего завершается. Если задача была отменена, observable выдаст ошибку. `java.util.concurrent.CancellationException`.
271+
`Observable` выдает результат `FutureTask` по-готовности, после чего завершается. Если задача была отменена, observable выдаст ошибку `java.util.concurrent.CancellationException`.
272272

273273
Если вы заинтересованы в результате `Future` только ограниченное время, существует возможность задать таймаут в качестве аргумента.
274274

@@ -296,7 +296,7 @@ Received: 3
296296
Completed
297297
```
298298

299-
`Observable` это не то же что `Iterable` или `Stream`. `Observable` push-ориентированный, в том смысле, что вызов `onNext` провоцирует стек обработчиков выполниться вплоть до последнего `subscribe` метода (если не задано иначе). Остальные модели pull-ориентированные - значения в них запрашиваются с другой стороны и выполнение блокируется до возвращения результата.
299+
`Observable` это не то же что `Iterable` или `Stream`. `Observable` push-ориентированный, в том смысле, что вызов `onNext` провоцирует стек обработчиков выполниться вплоть до последнего `subscribe` метода. Остальные модели pull-ориентированные - значения в них запрашиваются с другой стороны и выполнение блокируется до возвращения результата.
300300

301301
[Reducing a sequence](/Part 2 - Sequence Basics/2. Reducing a sequence.md) |
302302

0 commit comments

Comments
 (0)