Rx JS понимает метод подъема -- javascript поле с участием rxjs пол Связанный проблема

Rx js understanding the lift method


11
vote

проблема

русский

Я хочу создать новый оператор, и я нахожу в Документация То, что один из способов сделать что-то подобное:

 <код> class MyObservable extends Observable {   lift(operator) {     const observable = new MyObservable()     observable.source = this;     observable.operator = operator;     return observable;   }    // put it here .. or ..   customOperator() {     /* do things and return an Observable */   } }  // ... put it here... MyObservable.prototype.mySimpleOperator = mySimpleOperator;   

Я не понимаю, что такое <код> lift метод и что здесь происходит, может кто-то помочь, пожалуйста?

Английский оригинал

I want to create a new operator and I find in the documentation that one of the ways is to do something like this:

class MyObservable extends Observable {   lift(operator) {     const observable = new MyObservable()     observable.source = this;     observable.operator = operator;     return observable;   }    // put it here .. or ..   customOperator() {     /* do things and return an Observable */   } }  // ... put it here... MyObservable.prototype.mySimpleOperator = mySimpleOperator; 

I don't understand what is the lift method and what is going on here, can someone help, please?

</div
     
 
 

Список ответов

20
 
vote
vote
Лучший ответ
 

<Код> lift используется все время внутри в RXJS 5. Принцип лифта заключается в том, что вы готовите новое наблюдаемое, что при подписке будет пересылать события в том, как оператор определяет. По Паве Taylor ( https://youtu.be/qhjalubbqpg?t=19m < / a>). Лифт - очень фундаментальный строительный блок.

вместо создания нового класса - расширение наблюдаемых - вы также можете просто создать сам оператор. Пользователи оператора могут позвонить ему, написав:

 <код> Observable.of(1, 2, 3)   .lift(new MyCustomOperator)   .subscribe()   

Это означает, что никто не должен учиться, что еще один оператор доступен в наблюдаемом API, но вместо этого видит, что он что-то определено в другом месте.

В идеале вы можете написать

 <код> someObservable::myCustomOperator();   

Но, к сожалению, оператор Bind может быть длинным / никогда не произойдет, поэтому <код> .lift(operator) кажется наиболее явным / чистым способом.

 

lift is used all the time internally in RxJS 5. The principle of lift is that you prepare a new Observable that upon subscribe will forward the events in the way the operator defines. There is a good video about it by Paul Taylor (https://youtu.be/QhjALubBQPg?t=19m). Lift is a very fundamental building block.

Instead of creating a new class - extending Observable - you could also just create the Operator itself. Users of the operator can then call it by writing:

Observable.of(1, 2, 3)   .lift(new MyCustomOperator)   .subscribe() 

This means no-one has to learn that yet another operator is available in the Observable API, but instead sees that it is something defined elsewhere.

Ideally you could write

someObservable::myCustomOperator(); 

but unfortunately the bind-operator might be long away / never gonna happen, so the .lift(operator) seems like the most explicit / clean way.

</div
 
 
 
 

Связанный проблема

21  Angularjs NG-модель внутри NG-Repeat имеет плохую производительность  ( Angularjs ng model inside ng repeat has poor performance ) 
У меня проблема с производительностью с угловой в следующем сценарии: <код> <div ng-repeat="a in array"> <input ng-model="something"> </div> Я писал к...

3  Рисование круга с помощью кинетических js  ( Drawing a circle using kinetic js ) 
Я пытаюсь построить очень базовую покраску, используя каркас kinetic JS. Все все идут хорошо, пока не попытался включить функцию формы, которая позволяет поль...

2  Совет инструмента не работает на текстовой зоне Bootstrap  ( Tool tip not working on text area bootstrap ) 
У меня есть форма Bootstrap 3, на которой я применяю Tootip через скрипт. Toottip работает нормально на поле ввода, но не работает над Textarea. <код> <div ...

3  Angularjs: Как активировать первый ненулевой элемент в Ngrepeat?  ( Angularjs how to activate first non zero item in ngrepeat ) 
для объекта, такого как <код> notification: { "text":0, "image":2, "video":0 } У меня есть <код> ng-repeat ввиду <код> <div ng-repeat="items...

1  jquery адрес плагин  ( Jquery address plugin issue ) 
Я использую плагин jQuery Address, я реализовал плагин на странице списка, когда я нажимаю на одну из ссылок, функция будет вытащить данные, используя AJAX и ...

0  Попытка вернуть массив объектов для просмотра, получить «10 $ digest () итераций  ( Trying to return array of objects to view get 10 digest iterations reached ) 
Я пытаюсь создать токенизатор, где пользователь вводится в форматную строку, а пользовательский интерфейс дает им предварительный просмотр анализатора. Когда ...

0  Ошибка прокладывания слайдера jQuery: ... не удалось конвертировать аргумент JavaScript ARG 0 [NSIDOMHTMLanChorElement.appendChild]  ( Jquery slider throwing error could not convert javascript argument arg 0 ns ) 
Наш сайт Dev Dev имеет ползунок отлично работает здесь: http://allblacks.01dev.co.nz/index.cfm layout = dnahome Однако мы просто поставили сайт Live, и ...

1  Если для JavaScript в XSLT не работает [дубликат]  ( If greater than javascript into xslt doesnt work ) 
<в сторону CLASS = "S-NEWACTS S-WELTIVE__info JS-Post-New Imide MB16« Роль = «Статус»> Этот вопрос уже есть ответы здесь : ...

0  Запустить функцию JavaScript с использованием C #  ( Trigger javascript function using c sharp ) 
Я должен написать класс C #, который получает содержимое HTML-страницы (страница публичная) и запускает функцию JavaScript, которая загружает файл. Моя цель...

1  Обработка ошибок METEOR для шаблона именования ошибок опечатки  ( Meteor error handling for template naming typo errors ) 
Недавно у меня была ошибка с именем, используемым в файле помощников. Поскольку используемое имя шаблона было недействительным, все мои глобальные помощники п...

183  Вертикально центрирующее модальное окно Bootstrap  ( Vertically centering bootstrap modal window ) 
Я хотел бы центрировать мою модаль на ViewPort (Middle), я пытался добавить некоторые свойства CSS <код> .modal { position: fixed; top:50%; left:50%; } ...

12  Синтаксисная ошибка в видом на бритву при прохождении свойств модели в качестве параметров на функцию JavaScript  ( Syntax error in razor view when passing model properties as parameters to javasc ) 
Я получаю <код> Syntax error на каждой запятой (<код> , ) и на последнем кронштейне (<код> ) ) в следующем коде: <код> <script type="text/javascript"> ...

1  Функция валидации угловых JS Возвращает до завершения вызова API для проверки  ( Angular js validation function returns before the api call for validation is com ) 
<код> if (!validate()) { return; }; function validate() { var nameIsValid = ...

0  Почему это работает над сафари и Firefox, но не на хроме?  ( Why is this working on safari and firefox but not on chrome ) 
У меня есть адаптивное меню навигации, он работает следующим образом: при изменении размера окна появляется значок «Гамбургер» (три строки). Нажатие на этот з...

0  Нужен React Router Pro, чтобы помочь мне  ( Need a react router pro to help me ) 
Итак, сегодня я играл с маршрутизатором RACT и попытался изменить это Пример . Я хочу достичь этого: . Боковой NAV отображает только имена Когда пол...

Связанный проблема

21  Angularjs NG-модель внутри NG-Repeat имеет плохую производительность 
3  Рисование круга с помощью кинетических js 
2  Совет инструмента не работает на текстовой зоне Bootstrap 
3  Angularjs: Как активировать первый ненулевой элемент в Ngrepeat? 
1  jquery адрес плагин 
0  Попытка вернуть массив объектов для просмотра, получить «10 $ digest () итераций 
0  Ошибка прокладывания слайдера jQuery: ... не удалось конвертировать аргумент JavaScript ARG 0 [NSIDOMHTMLanChorElement.appendChild] 
1  Если для JavaScript в XSLT не работает [дубликат] 
0  Запустить функцию JavaScript с использованием C # 
1  Обработка ошибок METEOR для шаблона именования ошибок опечатки 
183  Вертикально центрирующее модальное окно Bootstrap 
12  Синтаксисная ошибка в видом на бритву при прохождении свойств модели в качестве параметров на функцию JavaScript 
1  Функция валидации угловых JS Возвращает до завершения вызова API для проверки 
0  Почему это работает над сафари и Firefox, но не на хроме? 
0  Нужен React Router Pro, чтобы помочь мне