Ketten von asynchronen Methodenaufrufen - Javascript

Sie haben ein Prototypobjekt Foo mit zwei asynchronen Methodenaufrufen, bar und baz.

var bob = new Foo()

Foo.prototype.bar = function land(callback) {
  setTimeout(function() {
    callback()
    console.log('bar');
  }, 3000);
};

Foo.prototype.baz = function land(callback) {
  setTimeout(function() {
    callback()
    console.log('baz');
  }, 3000);
};

Wir möchten bob.bar (). Baz () ausführen und es nacheinander "bar" und "baz" protokollieren lassen.

Wenn Sie die Methodenaufrufe (einschließlich der Übergabe Ihrer Rückruffunktion) nicht ändern können, wie können Sie diesen Methodenaufrufen einen Standardrückruf übergeben?

Einige Ideen

Wrap "Bob" mit Dekorateur (noch unscharf, wie zu implementieren, könnte ein kleines Beispiel verwenden)

Modify Konstruktor zum Zuweisen eines Standard-Rückrufs, wenn keiner zugewiesen ist (habe nicht berücksichtigt, ob dies möglich ist oder nicht)

Verwenden Sie einen Generator-Wrapper, der die nächste Methode so lange aufruft, bis keine mehr übrig sind?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage