Angular 类型为'的参数;(src:可观察<;任何>;)=>;可观察<;任何>';不可分配给类型为';运算符函数<;对象,任何>';这就是错误所在
启动应用程序时出现typescript错误。不知道我丢失了什么。我认为这是rxjs版本的问题,但没有得到正确的解决方案。 我的系统中显示不兼容的类型。 无法从可观察对象获取响应 当我运行应用程序时,我得到了错误,在代码中添加任何内容(只需保存app.component.ts文件的代码)后,它开始工作 这就是我在rxjs模块中遇到的错误 retryWithbackoffAngular 类型为'的参数;(src:可观察<;任何>;)=>;可观察<;任何>';不可分配给类型为';运算符函数<;对象,任何>';这就是错误所在,angular,typescript,ionic-framework,rxjs,observable,Angular,Typescript,Ionic Framework,Rxjs,Observable,启动应用程序时出现typescript错误。不知道我丢失了什么。我认为这是rxjs版本的问题,但没有得到正确的解决方案。 我的系统中显示不兼容的类型。 无法从可观察对象获取响应 当我运行应用程序时,我得到了错误,在代码中添加任何内容(只需保存app.component.ts文件的代码)后,它开始工作 这就是我在rxjs模块中遇到的错误 retryWithbackoff import { of } from 'rxjs/observable/of'; import { delay, mergeMa
import { of } from 'rxjs/observable/of';
import { delay, mergeMap, retryWhen } from 'rxjs/operators';
// const getErrorMessage = (maxRetry: number) => {
// return `Tried for max ${maxRetry} times without success. Giving up.`;
// };
const DEFAULT_MAX_RETRIES = 5;
const DEFAULT_BACKOFF = 1000;
export function retryWithBackoff(delayMs: number, maxRetry = DEFAULT_MAX_RETRIES, backoffMs = DEFAULT_BACKOFF) {
let retries = maxRetry;
return (src: Observable<any>) =>
src.pipe(
retryWhen((errors: Observable<any>) => errors.pipe(
mergeMap(error => {
if (retries-- > 0) {
const backoffTime = delayMs + (maxRetry - retries) * backoffMs;
return of (error).pipe(delay(backoffTime));
}
// return throwError(getErrorMessage(maxRetry));
})
))
);
}
从'rxjs/observable/of'导入{of};
从'rxjs/operators'导入{delay,mergeMap,retryWhen};
//const getErrorMessage=(maxRetry:number)=>{
//返回`尝试了max${maxRetry}次,但未成功。放弃。`;
// };
const DEFAULT_MAX_RETRIES=5;
const DEFAULT_BACKOFF=1000;
导出函数retryWithBackoff(delayMs:number,maxRetry=DEFAULT\u MAX\u RETRIES,backoffMs=DEFAULT\u BACKOFF){
让retries=maxRetry;
回报率(src:可观察)=>
钢骨混凝土管(
retryWhen((错误:可观察)=>errors.pipe(
合并映射(错误=>{
如果(重试-->0){
const backoffTime=delayMs+(maxRetry-retries)*backoffMs;
返回(错误)。管道(延迟(回退时间));
}
//返回抛出器错误(getErrorMessage(maxRetry));
})
))
);
}
我不确定这是否能解决您的问题,但我相信这不会像以下那样返回observable:
return <Observable<any>>this.http.get('langs').pipe(
//Error here
retryWithBackoff(1000, 3)
);
return retryWithBackoff函数返回什么?发布了我的函数
import { of } from 'rxjs/observable/of';
import { delay, mergeMap, retryWhen } from 'rxjs/operators';
// const getErrorMessage = (maxRetry: number) => {
// return `Tried for max ${maxRetry} times without success. Giving up.`;
// };
const DEFAULT_MAX_RETRIES = 5;
const DEFAULT_BACKOFF = 1000;
export function retryWithBackoff(delayMs: number, maxRetry = DEFAULT_MAX_RETRIES, backoffMs = DEFAULT_BACKOFF) {
let retries = maxRetry;
return (src: Observable<any>) =>
src.pipe(
retryWhen((errors: Observable<any>) => errors.pipe(
mergeMap(error => {
if (retries-- > 0) {
const backoffTime = delayMs + (maxRetry - retries) * backoffMs;
return of (error).pipe(delay(backoffTime));
}
// return throwError(getErrorMessage(maxRetry));
})
))
);
}
return <Observable<any>>this.http.get('langs').pipe(
//Error here
retryWithBackoff(1000, 3)
);
getLanguages(): Observable<any> {
return this.http.get<any>('langs').pipe(
retryWithBackoff(1000, 3)
);
}