角度2中的完成参数不起作用

时间:2018-04-11 07:56:23

标签: angular typescript asynchronous subscription

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

但是在我尝试控制台的部分记录了 显示 这个词,似乎它不会进入该参数。有什么问题?

2 个答案:

答案 0 :(得分:0)

此功能

() => {
    console.log('display');
    this.displayClockDetail();
}
只有当请求失败(发生一些错误)并且在它之前没有正确处理时,

才会起作用。

如果希望函数在observable完成时起作用,则可以将第三个参数传递给subscribe函数。

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

答案 1 :(得分:0)

在检入控制台后显示的消息

,尝试这样的事情
 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');
});