Heim >Web-Frontend >js-Tutorial >Einführung in die Verwendung des Callback-Kontrollflusses in JavaScript_Javascript-Kenntnissen

Einführung in die Verwendung des Callback-Kontrollflusses in JavaScript_Javascript-Kenntnissen

WBOY
WBOYOriginal
2016-05-16 16:08:581465Durchsuche

Die Callbacks, die überall in JavaScript zu sehen sind, sind eine Katastrophe für die Prozesssteuerung, und die Mängel liegen auf der Hand:

1. Ohne eine explizite Rückgabe kann es leicht zu redundanten Prozessen und den daraus resultierenden Fehlern kommen.
2. Der Code ist unendlich verschachtelt und schwer zu lesen.

Lassen Sie uns darüber sprechen, wie Sie die oben genannten Probleme lösen und vermeiden können.

Das erste Problem ist eine Gewohnheitssache. Dies gilt insbesondere bei der Verwendung von Coffee-Script (obwohl es das Endergebnis selbst erfasst, wenn es in Javascript kompiliert wird). wird als Rückgabewert verwendet, dieser Rückgabewert stellt jedoch nicht unbedingt Ihre ursprüngliche Absicht dar). Schauen Sie sich das Beispiel unten an.

Code kopieren Der Code lautet wie folgt:

a = (ähm, Rückruf)->
callback() wenn Fehler?
console.log 'Du wirst mich sehen'

b = ->
console.log 'Ich bin ein Rückruf'

a('Fehler', b)

Bei diesem sogenannten „Fehler zuerst“-Codierungsstil möchten wir natürlich nicht, dass der nachfolgende Code in Methode a weiterhin ausgeführt wird, wenn ein Fehler auftritt, aber wir möchten nicht werfen, um den gesamten Prozess auszuführen hängen (es muss anmutig sein, auch wenn es passiert) Verdammt ~), dann erzeugt der obige Code Fehler.

Eine Lösung besteht darin, ehrlich gesagt if...else... zu schreiben, aber ich bevorzuge den folgenden Ansatz:

Code kopieren Der Code lautet wie folgt:

a = (ähm, Rückruf)->
callback() zurückgeben, wenn Fehler?
console.log 'Du wirst mich nicht sehen'

b = ->
console.log 'Ich bin ein Rückruf'

a('Fehler', b)

Die meisten Rückgabewerte in asynchronen JavaScript-Methoden sind nutzlos, daher wird return hier als Prozesssteuerung verwendet, was weniger Code als if...else..., aber klarer ist.

Das zweite Problem entsteht im Mutterleib und ist schwer zu beseitigen.

Eine gute Möglichkeit besteht darin, einige Flusskontrollmodule zu verwenden, um den Code besser zu organisieren. Async ist beispielsweise ein gutes Modul, das eine Reihe von Schnittstellen bereitstellt, einschließlich Iteration, Schleife und einigen bedingten Anweisungen, und sogar A-Warteschlangen umfasst System. Die folgenden Beispiele können die Vor- und Nachteile der beiden Schreibmethoden verdeutlichen

Code kopieren Der Code lautet wie folgt:

#normal

first = (callback)->
console.log 'Ich bin die erste Funktion'
Rückruf()

Sekunde = (Rückruf)->
console.log 'Ich bin die zweite Funktion'
Rückruf()

dritter = ()->
console.log 'Ich bin die dritte Funktion'

zuerst ->
Sekunde ->
dritter()

# asynchron verwenden

async = require('async')

async.waterfall [
zuerst
zweitens
dritter
], (ähm)->

Welches wirst du als weiser Mensch wählen?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn