Ich animiere eine automatisierte Unterhaltung mit einem Bot.Zurück aufgelöst von einer anderen Funktion verzögert
Wenn die erste Nachricht ("Hallo, schau dir das an!") Gedruckt wurde, gehe ich zur nächsten Funktion .then()
. Allerdings weiß ich nicht, wie man die r.resolve()
in diesem Fall einrichten, es ist wie verschachtelt oder so etwas.
var messages = [
"Hi there, take a look at this!",
"Enter your address",
"blah blah"
];
function printLetters(target, message, index, interval, n) {
r = $.Deferred();
$('#m'+n).fadeIn();
if (index < message.length) {
$(target).append(message[index++]);
setTimeout(function() {
printLetters(target, message, index, interval, n);
}, interval);
} else {
r.resolve();
}
elem.scrollTop = elem.scrollHeight;
return r;
}
function printMessage(n) {
r = $.Deferred();
setTimeout(function(){
$('#m'+n+'>p').empty();
r = printLetters('#m'+n+'>p', messages[n-1], 0, 40, n);
}, 400);
return r;
}
function startConversation() {
printMessage(1)
.then(showThumb1AndTapButton)
.then(showThumb2AndScroll)
.then(choosePaymentMethod)
.then(enterAddress);
}
startConversation();
In diesem Fall möchte ich von printMessage(1)
auf die nächste .then()
Funktion erhalten, aber ich bin nicht sicher, wie.
Ich bin mir nicht sicher, wie man die aufgelöste r
zurückgibt, wenn die Nachricht von der anderen Funktion gedruckt hat?
Oh, wops, ich habe vergessen, 'var' vor ihnen zu verwenden. In den anderen Funktionen, die ich gemacht habe, haben sie 'var'. Trotzdem weiß ich nicht, wie ich zur nächsten Funktion komme. – frosty
Siehe das Update. – Gabriel
Super, funktioniert perfekt. Vielen Dank – frosty