genannt habe ich beschlossen, mit einer Mischung aus Rückrufen und Versprechungen zu experimentieren. In meinem Kontext verwende ich keine tatsächlichen Versprechen, sondern die Versprechensnotation von "dann". Ich versuche, eine Funktion aufzurufen, die einen Rückruf hat, der ein Objekt zurückgibt. Dieses Objekt gibt ein Objekt mit einer Funktion zurück, die die Funktion in der an den ersten Aufruf angehängten Methode then() aufruft. Unten ist mein Code:Callback-Objekts und Eigenschaft des Objekts Rückkehr nicht wie erwartet
function step1(arg,callback) {
\t //do stuff
var obj = {key:"value"};
callback(obj);
}
function step2(obj) {
\t //do something to obj
obj.key2 = "hey";
return {
\t andthen: function(callback) {
\t callback(obj);
}
\t };
}
function step3(obj) {
//modify obj more
console.log(obj);
}
step1('arg1',step2).andthen(function(obj) { step3(obj); });
Dieser Code führt eine nicht abgefangene Typeerror: kann nicht lesen Eigenschaft 'andthen' undefinierter. Since step1('arg1',step2)
gibt ein Objekt zurück, warum kann JavaScript nicht die "andthen" -Eigenschaft des Objekts aufrufen? Ich weiß, Javascript ist asynchrones aber mein Verständnis ist, dass .andthen(function(obj) { step3(obj); })
würde warten, bis step1
beendet ist.
'step1' Rückkehr nichts überhaupt * (außer' undefined') *, so dass Sie auf diesem Teil falsch sind, und es kann nicht verkettet werden. – adeneo
Auch vielleicht dieses erfundenes Beispiel, aber dieser Code nichts tut asynchron, so etwas ist der Sinn? Rufen Sie einfach die drei Methoden der Reihe nach auf. – bhamlin
Eigentlich 'schritt1 ('arg1', function (o) {Schritt 2 (o) .andthen (step3)});' – adeneo