【发布时间】:2019-09-03 23:17:01
【问题描述】:
免责声明:这是我正在上课的练习的一部分,但我的老师知道这是否重要。
基本上,我需要在我的组件中编写一个方法。提供所有其他服务。首先,我也订阅了一个 observable。它发出一个值。然后我必须将该值传递给返回数组的 promise。
然后我必须在全部完成后 console.log('done') 。现在我的问题是订阅的 onComplete 即 () ,而承诺仍在解决。这是我的尝试。 recordList 最后确实包含了正确的结果,但它是完整的部分,首先将“完成”输出到控制台。
let recordList = [];
public loadData() {
let vm: any = this;
this.dataService.getRecord().subscribe(
record => {
// record is now a single dictionary object
// {'type': 'bookkeeping', 'id': 1}
// for each record type, get its list of attached data
record['data'] = []; // in case it has not record
vm.dataService.recordDetails(record.id).then(recordData => {
// recordData is an array
record['data'] = recordData
vm.recordList.push(record);
});
},
err => {
console.log("error getting record");
},
() => {
console.log('done')
}
)
}
【问题讨论】:
-
你必须把你的逻辑放在
subscribe回调中吗?一般来说,最好pipe你的逻辑。这将允许您从Promise创建一个 Observable,并在它返回后执行所需的任何逻辑。 -
@WillAlexander 感谢您的意见。在您发表评论后,我正在阅读有关管道的信息。你介意分享一个关于如何处理它的示例代码吗?谢谢。
标签: angular typescript