2016-09-17 9 views
0

私はここで愚かですか? (私はRubyから来ているので、私が紛失しているJavascript配列に関するものがあるかもしれません)。コンソールでJavascript配列数がコンソールと一致しませんか?

console.log(new_devices)

結果:Array[1]

console.log(new_devices.length)

コンソールでの結果:この生産0

コード:

var sp = require('serialport'); 
var new_devices = []; 

sp.list(function(err, ports) { 
    ports.forEach(function(current) { 
    if (current.manufacturer == "Teensyduino") { 
     new_devices.push(current); 
    } 
    }); 
}); 

console.log(new_devices); 
console.log(new_devices.length); 

enter image description here

+2

あなたが投稿する必要があります問題を再現するコード。これまで誰もこれを再現することはできません。配列の隣にある 'i'ボタンは何を表していますか?何か非同期的なことが起こっていますか? – Xufox

+0

StackSnippetを使用してコードを投稿してください –

+0

いいえ、何も非同期です。 – Alfo

答えて

2

をコンソールは、その配列への参照を作成するログアレイを慰めるときに、実行時の配列の状態のスナップショットは表示されません。

(。あなたのコードの項目ではそのコンソールログは、リストを印刷しているときは空で、リスト非同期に追加されます)

この例を考えてみましょう:

enter image description here

+0

それでは、このコードを再構成して 'new_devices.length'をコンソールに出力するときに正しい番号を得る方法はありますか? – Alfo

+0

port.forEachの後にconsole.logを移動します。 – knutesten

関連する問題