Я сталкиваюсь с проблемами всякий раз, когда пытаюсь использовать набор, который я заполнил асинхронно:
const MaterialType_Requests_FromESI$ = SDE_REACTIONDATA.map(data => this.ESI.ReturnsType_AtId(data.materialTypeID));
let MaterialCollectionSet: Set<string> = new Set<string>();
let MergedMaterialTypes$ = merge(MaterialType_Requests_FromESI$);
MergedMaterialTypes$.subscribe(
MaterialType$ => MaterialType$.subscribe(MaterialType => MaterialCollectionSet.add(MaterialType.name)),
null,
() => {
console.log(MaterialCollectionSet); // Outputs Set object, with a 'size' of 98
console.log(MaterialCollectionSet.size); // Outputs 'size' as 0
}
);
Если я утешаю этот журнал, возвращается объект со свойством размера 98, а такжемассив 'Entities', который имеет каждое значение набора, к которому я пытаюсь получить доступ ...
Однако при попытке получить доступ к свойству размера напрямую возвращается размер набора 0 ...
Кроме того, значение Set.entries () НЕ принимается в цикле for в качестве массива, даже при использовании Array.from () ...
const MaterialType_Requests_FromESI$ = SDE_REACTIONDATA.map(data => this.ESI.ReturnsType_AtId(data.materialTypeID));
let MaterialCollectionSet: Set<string> = new Set<string>();
let MergedMaterialTypes$ = merge(MaterialType_Requests_FromESI$);
MergedMaterialTypes$.subscribe(
MaterialType$ => MaterialType$.subscribe(MaterialType => MaterialCollectionSet.add(MaterialType.name)),
null,
() => {
// This loop runs zero times, despite Entries having 98 values
for(let entry of Array.from(MaterialCollectionSet.entries())) {
console.log(entry)
}
// console.log(MaterialCollectionSet); // Outputs Set object, with a 'size' of 98
// console.log(MaterialCollectionSet.size); // Outputs 'size' as 0
}
);
сообщений, таких как this, которые говорят, что нужно использовать циклы for-of, предполагают, что это должно работать ... но это не так.
Где / как я пропускаю доступ к свойствам этого набора ???