【发布时间】:2018-08-20 05:27:53
【问题描述】:
我有办法:
prepareCalendarDaysToAdd() {
this.getDaysToAdd(); //first line
this.dataSaved.emit(this.daysToAdd); //second line
}
方法 getDaysToAdd() 是一个异步调用:
getDaysToAdd() {
this.daysService.getDaysInSpecificYearWith(this.toDate.year).subscribe(
data => {
this.getCalendarDaysFrom(data);
},
error => { console.error(error); },
() => {
this.getCalendarDaysBetween();
}
)
}
问题是数据在准备好之前就发出了。 我如何 w8 确定来自第一行的异步调用是否已完成?
所以我试图得到的确切代码是:
prepareCalendarDaysToAdd() {
if getDaysToAdd is finished then emit list of days
}
我试图处理解决这个问题的承诺,但似乎我不明白它应该如何工作。
prepareCalendarDaysToAdd() {
const promise = new Promise((resolve, reject) => {
this.getDaysToAdd(); //first line
resolve();
})
.then(
() => {
this.dataSaved.emit(this.daysToAdd); //second line
}
);
});
【问题讨论】:
-
在
this.getCalendarDaysFrom(data);行下方的订阅函数中添加this.dataSaved.emit(this.daysToAdd);。因为作为它的异步调用,可以在其订阅中完成数据发射
标签: angular typescript asynchronous frontend