Javascript 如何利用可观测数据处理角度误差
我不是返回新的数据,而是返回返回者或丢失的数据 演示:您可以像这样手动抛出一个可观察到的错误Javascript 如何利用可观测数据处理角度误差,javascript,angular,error-handling,observable,Javascript,Angular,Error Handling,Observable,我不是返回新的数据,而是返回返回者或丢失的数据 演示:您可以像这样手动抛出一个可观察到的错误 import { Observable, of, throwError } from "rxjs"; // let mydata = undefined; let mydata = [1]; let MissingData = "No data available"; function getData(): Observable<any> {
import { Observable, of, throwError } from "rxjs";
// let mydata = undefined;
let mydata = [1];
let MissingData = "No data available";
function getData(): Observable<any> {
if (mydata !== undefined) {
return new Observable(observer => {
observer.next(mydata);
observer.complete();
});
} else if (mydata === undefined) {
return throwError(MissingData);
}
}
getData().subscribe((res) => {
console.log ('data:', res);
}, err => {
console.log('err:', err)
})
然后像这样订阅
else if (this.mydata === undefined){
throw Observable.throw(MissingData)
}
因此,完整的代码如下所示:
service.getData().subscribe((res) => {
console.log (res);
}, err => {
console.error(err)
})
我也做了一些重构,只是为了把代码缩短一点。希望能有帮助。干杯。尝试使用承诺。我在这里为您提供了一个示例代码
let mydata = [a,b,c,d,1,2,3]
let MissingData = "No data available"
public getData(): Observable<any[]> {
if (mydata) {
return new Observable(observer => {
observer.next(mydata);
observer.complete();
});
}
throw Observable.throw(MissingData)
}
//Somewhere in the scripts
service.getData().subscribe((res) => {
console.log (res);
}, err => {
console.error(err)
})
在您的方法中,如果数组为空,那么它将返回空数据:[]不是MissingData消息?是的,当然,因为空数组是有效数据,但是如果需要,您可以添加一个条件来检查数组是否为空。我们仅在变量未定义的情况下进行检查:mydata!==未定义如果mydata&&mydata.length>0,我也会尝试,如果这是真的,它会返回数据,但如果我执行其他操作,如果是this.VitalSigns.length,什么是VitalSigns?您可以简单地编写:if mydata&&mydata.length>0{observer.nextmydata;}else{throwErrorMissingData}
service.getData().subscribe((res) => {
console.log (res);
}, err => {
console.error(err)
})
let mydata = [a,b,c,d,1,2,3]
let MissingData = "No data available"
public getData(): Observable<any[]> {
if (mydata) {
return new Observable(observer => {
observer.next(mydata);
observer.complete();
});
}
throw Observable.throw(MissingData)
}
//Somewhere in the scripts
service.getData().subscribe((res) => {
console.log (res);
}, err => {
console.error(err)
})
let mydata = [a,b,c,d,1,2,3]
let MissingData = "No data available"
public getData(){
return new Promise((resolve, reject) =>{
if (this.mydata !== undefined) { resolve(mydata); }
else if (this.mydata === undefined){ reject(MissingData)}
} );
}
getData().then(
resolve => {
// succcess
},
reject =>{
// rejected.
});