Обещания Angular 2 или RxJ?

Глядя на RxJ, они кажутся более мощными, но до сих пор мы использовали Promises для реализации Ajax в угловых приложениях.

Какой из них предпочтительнее в приложениях Angular 2? Нужно ли нам когда-либо включать полифилл промисов ES6 при использовании RxJ?


person Nexus23    schedule 18.12.2015    source источник


Ответы (1)


Их можно использовать вместе, что очень хорошо работает. RxJS предназначен не только для разрешения промисов, но и для асинхронных потоков приложений. Вы можете использовать Rx.Observable.fromPromise для Observable, который испускает один элемент, когда обещание разрешено.

Вот пример:

// Create a promise which resolves 42
var promise1 = new RSVP.Promise(function (resolve, reject) {
    resolve(42);
});

var source1 = Rx.Observable.fromPromise(promise1);

var subscription1 = source1.subscribe(
  function (x) {
    console.log('Next: %s', x);
  },
  function (err) {
    console.log('Error: %s', err);
  },
  function () {
    console.log('Completed');
  });

// => Next: 42
// => Completed

// Create a promise which rejects with an error
var promise2 = new RSVP.Promise(function (resolve, reject) {
    reject(new Error('reason'));
});

var source2 = Rx.Observable.fromPromise(promise2);

var subscription2 = source2.subscribe(
  function (x) {
    console.log('Next: %s', x);
  },
  function (err) {
    console.log('Error: %s', err);
  },
  function () {
    console.log('Completed');
  });

// => Error: Error: reject

Демонстрацию angular 2 с RxJS см. на angular2-rxjs-chat.

person Martin Seeler    schedule 18.12.2015