【问题标题】:TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefinedTypeError:无法读取未定义的属性'Symbol(Symbol.iterator)'
【发布时间】:2016-05-24 21:26:26
【问题描述】:

Web 服务请求失败时出现以下异常。

TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined

具体来说,HTTP GET 返回 400 Bad request。

在这里你可以找到涉及的组件:

@Component({
    selector: 'events-list',
    directives: [EventRow],
    changeDetection: ChangeDetectionStrategy.OnPush,
    providers: [HTTP_PROVIDERS],
    template: `
<table>
    <tr *ngFor="let event of events | async" [event]="event" >
    </tr>
</table>
  `
})
export class EventsList implements OnInit {
    events: Observable<Event[]>;

    constructor(public http: Http) { }

    ngOnInit(): void {
        let obs;
        this.events = Observable
            .create((o) => {
                obs = o;
                obs.next();
            })
            .flatMap(() => {
                return this.http.get('event/view');
            })
            .retryWhen(error => {
                error.delay(3000);
            })
            .map((response: Response) => {
                setTimeout(() => {
                    obs.next();
                }, 10000);
                return (<any>response.json()).map(item => {
                    return item;
                });
            });
    }
}

有什么建议吗?

提前致谢!

【问题讨论】:

    标签: typescript angular rxjs


    【解决方案1】:

    我认为您错过了retryWhen 中的返回:

    .retryWhen(error => {
      return error.delay(3000);
    })
    

    【讨论】:

    • 是的。使用这种结构很难捕获错误。谢谢!
    猜你喜欢
    • 2017-06-20
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多