NodeJS: Wie übergebe ich Argumente an eine Funktion mit process.nextTick

7

Ich versuche, einen Web-Crawler dazu zu bringen, Produkte von bestimmten Seiten zu holen, um meine Speicherauslastung zu reduzieren (ich habe irgendwo ein Speicherleck, das ich nicht gefunden habe). Also ich versuche, Argumente zu einem Rückruf asynchron zu senden, um den aktuellen Kontext zu beenden.

Hier bin ich:

%Vor%

Das habe ich ausprobiert:

%Vor%     
leech 23.08.2011, 22:21
quelle

3 Antworten

12
%Vor%

Wenn dieser Stil für Sie nicht offensichtlich ist, sollten Sie Closures studieren mehr.

(Das Setzen von "big" auf "null" ist hier wahrscheinlich unnötig; sobald der Callback beendet ist, geht big aus dem Bereich.)

Bearbeiten: Zu Ehren des sechsjährigen Jubiläums dieser Frage gibt es hier eine ECMA-6-Version derselben Sache:

%Vor%     
Malvolio 23.08.2011, 22:31
quelle
12

process.nextTick () unterstützt das Übergeben von Argumenten wie setTimeout () nicht. Sie müssen nur eine Funktion erstellen, die die Argumente übergibt.

Also statt:

%Vor%

Verwenden Sie dies:

%Vor%

Sie können auch eine Funktion verwenden, um Ihre Funktion zu erstellen.

Schließlich unterstützt setTimeout nicht das Angeben des Objekts, für das die Funktion aufgerufen wird, daher ist es in seiner Nützlichkeit eingeschränkt.

    
Ben Atkin 23.08.2011 22:31
quelle
2

Obwohl process.nextTick () Argumente nicht direkt unterstützt, gibt es eine Verknüpfung, die dasselbe erreicht.

%Vor%

Beachten Sie, dass dies funktionell nicht anders ist als bei den bereits angegebenen expliziten Abschlussantworten (minus manuelles Setzen von big = null; , anstatt es selbst außerhalb des Gültigkeitsbereichs zu lassen), aber ich denke, es macht den Code etwas einfacher lesen.

bind() ist tatsächlich ein viel mächtigeres Werkzeug als hier gezeigt; Lesen Sie mehr (einschließlich einiger Beispiele) unter der MDN-Dokumentation .

Details: Der erste Parameter für bind() ist der Wert, der this während der Ausführung von callback() zugewiesen wird, der hier null zugewiesen wird, da es aussieht, als würde es nicht verwendet werden dieser Fall. Alle zusätzlichen Parameter (nur big in diesem Fall) werden als Argumente an callback übergeben, wenn sie später aufgerufen werden, und zwar über eine Technik, die "Partial Function Application" genannt wird.

    
zacronos 04.09.2014 15:09
quelle

Tags und Links