我正在使用试图在具有三种不同文本行的div中键入文本。所以我想为第一行调用函数typed_text(),然后再次调用第二行,然后再调用第三行。我尝试使用promises,但是在使用setTimeout()和递归时我丢失了。如何在彼此之后调用异步递归函数?
我称之为这样的功能。
typed_text("#line_one", frame.text_one, 0, 25)
typed_text("#line_two", frame.text_two, 0, 25)
typed_text("#line_three", frame.text_three, 0, 25)
function typed_text(div, text, index, interval)
{
if (quit_typed_text == true) {
interval = 0;
}
if (index < text.length) {
$(div).append(text[index++]);
setTimeout(function() {typed_text(div, text, index, interval); }, interval);
} else {
click_disabled = false;
}
}
编辑:这是我用递归尝试,并承诺
typed_text("#text_one", frame.text_one, 0, 25).then(typed_text("#text_two", frame.text_two, 0, 25));
function typed_text(div, text, index, interval)
{
return new Promise(function (resolve) {
if (quit_typed_text == true) {
interval = 0;
}
if (index >= text.length) {
click_disabled = false;
resolve();
}
}).then(function() {
if (index < text.length) {
$(div).append(text[index++]);
/* Problem is here, setTimeout.then() does not exist as a function */
setTimeout(function() {typed_text(div, text, index, interval); }, interval);
}
});
}
'我试图用promises' - 没有按看起来不像它 –
我没有发布我的代码使用承诺,因为我不知道我在哪里与递归。如果不是递归,我认为解决方案会起作用。如果这能帮上忙,我可以分享我所拥有的。 – Chris