我想通过从Firebase数据库获取项目并将其推送到列表来填充列表。经过大量的搜索,我在我的代码中达到了这一点:如何解决“_这是未定义”在角2
this.angFire.database.list('/SpareParts', {
query: {
orderByChild: '',
limitToFirst: this.limit // this is a BehaviorSubject<number>(3)
}
}).subscribe(items => items.forEach(item => function f(j) {
setTimeout(() => {
console.log('timeout');
this.items.push(item);
if (--j) f(j);
}, 3000)
}.bind(this)(3)));
在这里,我只抓取3个Firebase项目。代码的工作方式。它穿过的setTimeout,推动三个项目在列表中的同一时间,它完成后,它与错误崩溃:
_this is undefined
在此之前,我是收到错误
this is undefined
所以我用.bind函数仍然没有工作。
任何意见,将不胜感激。谢谢。
函数f(j)的应该是(J)=> {}由于实际阻止您能够访问这个 – Sorikairo
@Sorikairo通过改变函数f(j)至(j)=> {}我不能再有自我调用功能,因此我可能不得不改变代码的所有部分,这是我无法想象的。 – drdream100
@ drdream100所有这一切都感觉很腥。你为什么要在setTimeout中包装呢?不,我没有看到你认为你能够重新调用f,因为它是一个已经被调用的回调函数。 –