2016-09-17 5 views
0

Bin ich hier dumm? (Ich komme aus Ruby, also könnte etwas an Javascript-Arrays fehlen, die ich vermisse).Javascript Array-Anzahl stimmt nicht mit der Konsole überein?

console.log(new_devices)

Ergebnis in der Konsole: Array[1].

console.log(new_devices.length)

Ergebnis in der Konsole: 0

Der Code produzieren diese:

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

Sie müssen die posten Code, der das Problem reproduziert. Bis jetzt kann niemand das reproduzieren. Was sagt die Schaltfläche "i" neben dem Array? Geht etwas Asynchrones vor sich? – Xufox

+0

Bitte schreiben Sie den Code mit StackSnippet –

+0

Nein, nichts asynchron. – Alfo

Antwort

2

Wenn Sie Arrays Konsolprotokoll die Konsole einen Verweis auf das Array erzeugt, es zeigt Ihnen keine Momentaufnahme des Status des Arrays zum Zeitpunkt der Ausführung.

(In Ihrem Code Artikel werden in der Liste async angefügt, so dass, wenn das Konsolenprotokoll die Liste gedruckt werden ist leer.)

dieses Beispiel vor:

enter image description here

+0

Also, wie restrukturiere ich diesen Code in diesem, so dass ich eine korrekte Nummer bekommen kann, wenn ich 'new_devices.length' auf die Konsole drucke? – Alfo

+0

Verschieben Sie console.log nach Sie ports.forEach – knutesten

Verwandte Themen