【发布时间】:2019-02-19 21:48:17
【问题描述】:
使用此代码,我可以正确添加到“MaterialCollectionSet”
let MaterialCollectionSet: Set<string> = new Set();
for(let data of SDE_REACTIONDATA) {
this.ESI.ReturnsType_AtId(data.materialTypeID).subscribe((MaterialData) => {
MaterialCollectionSet.add(MaterialData.name);
});
但是,尝试运行 此 代码
let MaterialCollectionSet: Set<string> = new Set();
for(let data of SDE_REACTIONDATA) {
this.ESI.ReturnsType_AtId(data.materialTypeID).subscribe((MaterialData) => {
MaterialCollectionSet.add(MaterialData.name);
});
console.log(MaterialCollectionSet);
将记录一个空集。
我知道这是因为异步调用发生在 console.log 在 for-of 循环之外被调用。
我的问题是,一旦 for-of 循环完成填充 Set,如何实际使用它?
【问题讨论】:
-
rxjs-dev.firebaseapp.com/api/index/function/merge: 将所有的 observable 合并为一个,订阅这个唯一的 observable 以将每个发出的事件添加到集合中,并在订阅时传递完成回调以记录完整的集合。跨度>
标签: angular typescript asynchronous callback