Perché devi per flatMap il fromPromise per ottenere il tentativi al lavoro?
(Il '/ error' restituisce lo stato 500)Rx fromPromise e riprovare
var responseStream = Rx.Observable.just('/error').
flatMap(requestUrl => {
return Rx.Observable.fromPromise(_this.$http.get(requestUrl));
});
responseStream.
retry(3).
subscribe(
function (x) {
console.log('Next: ' + x);
},
function (err) {
console.log('Error: ' + err);
},
function() {
console.log('Completed');
});
vorrei tagliare il cerimoniale e solo:
Rx.Observable.fromPromise(_this.$http.get('error')).
retry(3).
subscribe(
function (x) {
console.log('Next: ' + x);
},
function (err) {
console.log('Error: ' + err);
},
function() {
console.log('Completed');
});
In questo secondo caso la chiamata XHR è solo eseguito una volta.
Grazie questo è esattamente quello che stavo cercando! – Brett
@paulpdaniels posso semplicemente racchiudere la promessa in una funzione semplice e quindi fornire quella di fromPromise come: Rx.Observable.fromPromise (getRequest) .retry .... dove getRequest è una funzione semplice che restituisce la promessa. ovvero: function getRequest() {return _this. $ http.get ('/ error')); } –
@ShaileshVaishampayan dipende dalla versione di RxJS che si sta utilizzando. RxJS 4 ti permette di passare le funzioni a 'fromPromise' che sono pigramente valutate al momento dell'iscrizione, ma manca in RxJS 5. In entrambi i casi,' defer' funziona in entrambi i casi – paulpdaniels