Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 类型为'的参数;(src:可观察<;任何>;)=>;可观察<;任何>';不可分配给类型为';运算符函数<;对象,任何>';这就是错误所在_Angular_Typescript_Ionic Framework_Rxjs_Observable - Fatal编程技术网

Angular 类型为'的参数;(src:可观察<;任何>;)=>;可观察<;任何>';不可分配给类型为';运算符函数<;对象,任何>';这就是错误所在

Angular 类型为'的参数;(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

启动应用程序时出现typescript错误。不知道我丢失了什么。我认为这是rxjs版本的问题,但没有得到正确的解决方案。 我的系统中显示不兼容的类型。 无法从可观察对象获取响应

当我运行应用程序时,我得到了错误,在代码中添加任何内容(只需保存app.component.ts文件的代码)后,它开始工作

这就是我在rxjs模块中遇到的错误

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));
                })
            ))
        );
}
从'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)
   );
}