0
我試圖獲取請求後到我的服務器。我想用它與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」運算符來跟蹤在observables中傳遞的內容。讓我們知道你發現了什麼。 – user3743222
你取的代碼可能是不正確的,因爲你不是叫'抓(observer.onerror)'第一個承諾。 –
如果你的意思是我錯過了趕上()?在我的代碼中,我總是包含它... – BigPun86