【Javascript】array(0)なのに配列は値を保持している理由

Javascript
 

問題と原因

Reduxでアプリを作成していた。

Reduxパターンを作成していた時、Array(0)を受け取った。

なのにその中身にはなんと値が入っていたのである。

何故だろうと考察していると非同期処理で混雑しているのではないかと言う結論に至った。

その結論に至った理由は以下のソースコードを見たからである。

var arr = [];

setTimeout(function() {
  arr.push(1, 2, 3);
}, 5000);

console.log(arr.length);

console.log(arr);

このソースを実行すると値の検証にてArray(0)なのに中には値が入っている状態が実装できる。

その原因だがリアタイでconsole.log(arr)が呼ばれた際はarr.pushは実行されていない。

だが、setTimeoutによる5秒後にarr.pushが行われるためarrに値が入っていく。

そのためArray(0)にもかかわらず中身には値がはいっているのである。

この状態を改善するには非同期処理のタイミングを見直して行くしかないと思われる。

ちなみに私はfirebaseにおける非同期処理のタイミングを見直したことで解決に向かった。

参照↓

終わり。

コメント

タイトルとURLをコピーしました