firebaseデータベースから項目を取得してリストに入れることでリストを作成しようとしています。私はfirebaseからわずか3項目をつかんでいます。ここ角度2の "_this is undefined"を解決する方法
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)));
:周りの検索多くの後、私は私のコードでは、このポイントに到達しました。コードはある意味では機能します。 、私はエラー
になっていたこの前this is undefined
_this is undefined
:それは、リスト内で同時に3つのアイテムをプッシュし、それが行わだ後、それはエラーでクラッシュし、setTimeoutをを通過します
私はまだ動作しなかった.bind関数を使用しました。
これについてアドバイスをいただければ幸いです。ありがとうございました。
関数f(j)はであるべきである(J)=> {}、実際は(J)=> {} iは関数f(j)を変更することにより、この – Sorikairo
@Sorikairoにアクセスすることができなくなるためもう自己呼び出し関数を持つことができないので、コードのその部分をすべて変更しなければならないと思います。 – drdream100
@ drdream100これはすべて非常に怪しい感じです。なぜあなたはsetTimeoutでラップしているのですか?そして、いいえ、最初に呼び出されているコールバック関数だと考えると、fを再呼び出しできるとはどういうふうに思えますか? –