【问题标题】:finish parameter in angular 2 didn't work角度 2 中的完成参数不起作用
【发布时间】:2018-09-21 00:18:02
【问题描述】:

在从 API 获取结果后,我使用 subscribe 来执行代码行。这是我的代码

this.attRecService.getAgendaData(moment(this.viewDate).format('YYYY-MM')).subscribe(
        resp => {
            this.agendaData = resp;

            for (let item of resp) {
                if (item.schedule) {
                    for (let sched of item.schedule) {
                        this.events.push({
                            'start': new Date(moment(item.date).format('YYYY-MM-DD')),
                            'title': sched.title 
                        });
                    }
                }
            }
        },
        () => {
            console.log('display');
            this.displayClockDetail();
        }
    );

但在我尝试控制台记录单词 display 的部分,它似乎不会进入该参数。怎么了?

【问题讨论】:

  • 您缺少错误块
  • 谢谢。我已经知道了@mxr7350

标签: angular typescript asynchronous subscription


【解决方案1】:

这个功能

() => {
    console.log('display');
    this.displayClockDetail();
}

只有在请求失败(发生一些错误)并且在它之前没有正确处理时才会起作用。

如果你想让一个函数在 observable 完成时工作,你可以作为第三个参数传递给subscribe 函数。

.subscibe(() => { ok }, () => { error }, () => { completed })

【讨论】:

  • 所以你的意思是那部分仍然是错误处理,我应该在第三个参数中做?
  • 是的,我的意思是。
  • 另外,如果你做一个http请求,observable会自动完成,但是如果你使用自定义编写的observable,你需要显式完成它才能让第三个函数起作用
【解决方案2】:

尝试这样的事情,在控制台检查后显示什么消息

 this.attRecService.getAgendaData(moment(this.viewDate).format('YYYY-MM'))
 .subscribe((res: any) => {
     if(res) {
       for (let item of resp) {
            if (item.schedule) {
                for (let sched of item.schedule) {
                    this.events.push({
                        'start': new Date(moment(item.date).format('YYYY-MM-DD')),
                        'title': sched.title 
                    });
                }
            }
        }
        console.log('display');
      }
 }, (error?: any) => {
     console.log('error');
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 2019-01-17
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    相关资源
    最近更新 更多