Sie haben ein Prototyp-Objekt Foo mit zwei asynchronen Methodenaufrufen, bar und baz.Verketten von asynchronen Methodenaufrufen - JavaScript
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 wollen bob.bar() tun. Baz() und haben es "bar" log und "baz" nacheinander.
Wenn Sie die Methodenaufrufe nicht ändern können (einschließlich der Übergabe Ihrer Rückruffunktion), wie können Sie einen Standardrückruf an diese Methodenaufrufe übergeben?
Einige Ideen:
Wrap „bob“ mit Dekorateur
Ändern Konstruktor (noch unscharf, wie zu implementieren, könnte ein kleines Beispiel verwenden) Standard-Callback zu vergeben, wenn keine zugewiesen (haben nicht berücksichtigt, wenn dies möglich ist oder nicht)
Verwenden Sie einen Generator-Wrapper, der weiterhin die nächste Methode aufruft, bis keine mehr übrig sind?
Können Sie angeben, wie Sie verspricht verwenden würde? Sie sind aufgetreten, aber nicht sicher, wie sie angewendet werden –
Sind Sie mit der 'bob.bar(). Baz()' Syntax verheiratet? Es gibt viele Möglichkeiten, die Operation zu beschreiben, aber ich kann mir nichts vorstellen, was mit dieser spezifischen Syntax funktionieren würde. – Mike
Angenommen, wir sind :(Ich denke, wir müssen es irgendwie wickeln –