私は、3つの異なるテキスト行を持つdivに入力テキストを入れようとしています。だから、私は関数の1行目をtyped_text()を呼び出して、2行目、3行目のためにもう一度呼び出したいと思います。私は約束を使用しようとしましたが、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'を使用しようとした - doesnのそれのように見えません –
私は約束を使って私のコードを投稿しませんでした。どこで再帰を行っているのか分かりませんでした。再帰のためでない場合、私は解決策が働いたと思います。それが役に立たなければ、私が持っていたものを分かち合うことができます – Chris