【发布时间】:2019-10-18 23:57:47
【问题描述】:
我有一个 BehaviorSubject,第一个 .subscribe 回调返回一个包含 6 个对象的数组,并在控制台输出上显示 length: 6 但每个 for 循环仅迭代 5 次,甚至 console.log(arr.length)输出“5”
我真的不知道如何重现这个,但没有以下代码:
public objects: BehaviorSubject<Object[]> = new BehaviorSubject([]);
// other class
this.objectService.objects.subscribe(_objects => {
if (_objects) {
for (const obj of _objects) {
console.log(obj);
}
console.log(_objects);
console.log(_objects.length);
}
});
输出:
怎么会这样?许多不同的服务写入(objects.next)到这个 BehaviorSubject,但我怎样才能防止这种情况发生呢? 它只发生在第一次 'objects' 是 .next-ed 时,从第二个 .next 开始,此代码完美运行并显示实际长度。
我还在数组上测试了 .find 和 .filter,但它只能过滤最后 5 个条目,而不是第一个
【问题讨论】:
-
我从今天早上开始尝试解决这个问题。它似乎总是跳过数组的第一个条目。我现在唯一要做的就是使用不同的 BehaviorSubjects 来跟踪这个数组中不同类型的数量的完整解决方法,因为这个
for (const obj of _objects)在第一次被调用时永远不会工作
标签: angular typescript ionic-framework ionic4 ionic-native