0
的角2循環我需要做在角2以下:觀測量
- (使用可觀察)
- 驗證數據獲取數據。
- IF有效然後返回上述數據,否則,轉至步驟1(讀取數據)
- 繼續,直到有效數據發現
立即把一個可觀察在for循環中的火災的可觀察多次。這是一個不好的方法。什麼是好方法?
的角2循環我需要做在角2以下:觀測量
立即把一個可觀察在for循環中的火災的可觀察多次。這是一個不好的方法。什麼是好方法?
觀測量有retry方法,您可以通過只要拋出一個錯誤的數據使用的是無效的:
let src: Observable<any>;// the source Observable
src.map(data => {
if (!validate(data)) {
throw "Invalid data";
}
return data;
})
.retry() // you can limit the number of retries
.subscribe(data => {
// Do something with the data
});
如果您需要檢查錯誤,則可以使用retryWhen:
let src: Observable<any>;// the source Observable
src.map(data => {
if (!validate(data)) {
throw "Invalid data";
}
return data;
})
.retryWhen(errors => errors.map(err => {
if (err != "Invalid data") {
throw err;
}
})
.subscribe(data => {
// Do something with the data
});
使用遞歸函數調用。
取回功能:
public getData(): Observable<any> {}
用法:
public refresh() {
this.yourService.getData().subscribe(data => {
// validate data !
if (dataValid(data) {
// do something cool here .. !
}
else {
this.refresh(); // do it again ..
}
});
}