首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带退避的retryWhen

带退避的retryWhen
EN

Stack Overflow用户
提问于 2017-01-24 00:33:53
回答 1查看 323关注 0票数 1

http.get上出错时尝试重试(使用退避逻辑)

代码语言:javascript
复制
return this.http.get(this.urlToBackend)
            .map((res: Response) => res.json())
            .retryWhen(errors =>
                errors
                    .zip(Observable.range(3, 15), (_, i) => i)
                    .flatMap(i => {
                        if (i >= 15) {
                            throw errors;
                        }
                        let t = (Math.pow(2, i)) * 1000;
                        return Observable.timer(t);
                    }))
            .catch((error: any) => this.handleError(error, false, 0, this.urlToBackend));

一直收到以下错误:

代码语言:javascript
复制
TypeError: this.http.get(...).map(...).retryWhen is not a function
    at IOService.getUserDetails (http://localhost:4200/main.bundle.js:303:14)
    at NavirComponent.ngOnInit (http://localhost:4200/main.bundle.js:3328:24)
    at Wrapper_NavirComponent.ngDoCheck (/AppModule/NavirComponent/wrapper.ngfactory.js:22:53)
    at CompiledTemplate.proxyViewClass.View_AppWrapperComponent0.detectChangesInternal (/AppModule/AppWrapperComponent/component.ngfactory.js:100:28)
    at CompiledTemplate.proxyViewClass.AppView.detectChanges (http://localhost:4200/vendor.bundle.js:81933:14)
    at CompiledTemplate.proxyViewClass.DebugAppView.detectChanges (http://localhost:4200/vendor.bundle.js:82128:44)
    at CompiledTemplate.proxyViewClass.AppView.internalDetectChanges (http://localhost:4200/vendor.bundle.js:81918:18)
    at CompiledTemplate.proxyViewClass.View_AppWrapperComponent_Host0.detectChangesInternal (/AppModule/AppWrapperComponent/host.ngfactory.js:29:19)
    at CompiledTemplate.proxyViewClass.AppView.detectChanges (http://localhost:4200/vendor.bundle.js:81933:14)
    at CompiledTemplate.proxyViewClass.DebugAppView.detectChanges (http://localhost:4200/vendor.bundle.js:82128:44)
    at ViewRef_.detectChanges (http://localhost:4200/vendor.bundle.js:60587:20)
    at http://localhost:4200/vendor.bundle.js:41131:67
    at Array.forEach (native)
    at ApplicationRef_.tick (http://localhost:4200/vendor.bundle.js:41131:25)
    at ApplicationRef_._loadComponent (http://localhost:4200/vendor.bundle.js:41106:14)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-24 00:40:54

尝试添加导入

代码语言:javascript
复制
import "rxjs/add/operator/mergeMap";
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41818111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档