Нужна помощь в обработке асинхронных звонков с помощью. Любые предложения по написанию Observable с использованием Vertx3-EventBus и угловых - PullRequest
0 голосов
/ 31 октября 2018

Может кто-нибудь предложить написание Observables с использованием EventBus в Angular? Перепробовал много способов сделать это и не получилось. У меня очень тяжелое время для этого.

Заранее спасибо!

Вот мой сервис.

import * as EventBus from 'vertx3-eventbus-client';
import * as SockJS from 'sockjs-client';
import { Observable } from "rxjs";


export class Login {

    res: any = {};
    login(user: any): Observable<any>{
        var eb = new EventBus('http://localhost:40400/auction');
        eb.enableReconnect(true);
        eb.onopen = function () {
         };
        eb.enableReconnect(true);
          return eb.send(s.REGISTER, user, (error, reply) => {
                console.log("reply:"+ JSON.stringify(reply));
                this.res = reply;
            //    observer.next(this.res);
                }).map((res: Response) => res.json());
            // return Observable.create(observer => {
            //     console.log("this.res:" + JSON.stringify(this.res));
            //     observer.next(this.res);
            //    })
    }
}

1 Ответ

0 голосов
/ 17 ноября 2018

Для этого есть несколько подходов, несколько лет назад я сделал небольшую демонстрацию об использовании EventBus и реагирую, в этом случае я связываю EventBus с состоянием реакции, см. Эту презентацию, со слайда 22 на 25:

https://www.jetdrone.xyz/presentations/codemotion-amsterdam-2017/#/22

Важный код здесь:

class App extends React.Component {
  ...
  componentWillMount() {
    Rx.Observable
      .create((observer) => {
        eb.registerHandler('greetings', (err, msg) => {
          observer.next(msg.body.msg);
        });
      })
      .subscribe(message => {
        this.state.messages.unshift(message);
        this.setState({ messages: this.state.messages });
      });
  }

Конечно, с тех пор многое изменилось, и для Angular вы, вероятно, захотите использовать ngrx, и для этого есть полная статья, описывающая, как его использовать здесь:

https://vertx.io/blog/building-a-real-time-web-app-with-angular-ngrx-and-vert-x/

...