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%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%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.
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.
Tags und Links node.js