Я пытаюсь получить запрос POST на свой Сервер. Я хочу использовать его с RxJS для лучшего обзора моих данных ответа. Теперь я, возможно, есть проблемы с использованием его правильно ...Правильное использование RxJS с запросом на выборку
я называю RxJS принести в моем компоненте после кнопки мыши, когда я дать ему некоторые параметры:
_btnSendCode: function() {
var self = this;
var RelationShipModel = require('../NetworkUtils/RelationShipModel');
var relationShipType = RelationShipModel(currentIndex);
var InvitationAction = require('../../../Flux/Actions/InvitationAction');
InvitationAction.createInvitation(this.state.familyID, relationShipType, this.state.adminSwitch, AuthStore.getUserTokenWithBearer());
//self.props.navigator.pop();
}
Вот мой createInvitation:
var Rx = require('rx');
function notifyMessage(msg:string) {
if (Platform.OS === 'android') {
ToastAndroid.show(msg, ToastAndroid.SHORT)
} else {
AlertIOS.alert(msg);
}
}
createInvitation: function (familyID, type, isAdmin, userToken) {
let source = Rx.Observable.create(function (observer) {
fetch(API_URL + 'families/' + familyID + '/invitations', {
method: 'POST',
headers: {'Authorization': userToken, 'Content-Type': 'application/json'},
body: JSON.stringify({
'type': type,
'isAdmin': isAdmin
})
}).then(res => res.json())
.then(j => {
observer.onNext(j);
observer.onCompleted();
}).catch(observer.onError);
}).flatMap(function (array) {
return Rx.Observable.from(array);
});
let subscription = source.subscribe(
function (x) {
console.log('onNext: %s', x);
//Dispatcher.dispatch({
// actionType: ActionTypes.CREATE_INVITATION,
// data: JSON.parse(response._bodyText)
//});
},
function (e) {
console.log('onError: %s', e);
notifyMessage(e.message);
},
function() {
console.log('onCompleted');
}
);
console.log(subscription);
Таким образом, проблема в том, что onNext, OnError или OnCompleted никогда не та или иная строчка. В чем может быть проблема? Ответ на мой выбор должен быть правильным. Но даже если это не правильно, не должно ли я получить сообщение об ошибке в моем onError?
Вы пробовали отлаживать, чтобы увидеть, какая часть кода выполняется, а какая часть не? Вы имеете дело с обещаниями, если обещание не будет разрешено, вы остаетесь висящим, поэтому журнал отслеживает ваш код. Для Rxjs вы можете использовать оператор 'tap' для отслеживания того, что передается в наблюдаемых. Сообщите нам, что вы нашли. – user3743222
Ваш код выборки может быть неправильным, потому что вы не вызываете 'catch (observer.onerror)' на первое обещание. –
Где вы понимаете, я пропустил catch()? В моем коде я всегда включаю его ... – BigPun86