Асинхронные функции в цикле перестают выполняться после первой итерации на iOSIOS

Программируем под IOS
Ответить
Anonymous
 Асинхронные функции в цикле перестают выполняться после первой итерации на iOS

Сообщение Anonymous »

Я пытаюсь перебрать строку, вызывая функцию для каждой буквы, но с перерывом между каждым выполнением (чтобы запустить анимацию нажатия и нажатия клавиш для ввода слова на экранной клавиатуре).Я перебираю строку, ожидаю и асинхронно нажимаю функцию, которая отлично работает в Windows и Android, но на iOS цикл останавливается после первой итерации ( вызывается только для первого символа).

Код: Выделить всё

const type = async (text: string) => {
const characters = text.split("");
setTyped("");
await delay(500);

for (const character of characters) {
setTyped((prev: string) => prev + character);
await press(character, 100);
await delay(100);
}
};
меняет состояние с задержкой.

Код: Выделить всё

const press = async (key: string, duration: number) => {
pressDown(key);
await delay(duration);
pressUp(key);
};

const pressDown = (key: string) => {
setPressed(key);
};

const pressUp = (key: string) => {
setPressed(null);
};
Я также пробовал рекурсивный вариант, но он также не работает на iOS.

Код: Выделить всё

const type = async (text: string) => {
if (text.length === 0) return;

setTyped((prev) => prev + text[0]);
await press(text[0], 100)
.then(() => {
return delay(100);
})
.then(() => {
type(text.slice(1));
});
};
Это функция безопасности iOS или в моем коде ошибка? Есть ли способ обойти это или есть лучший способ пройтись по списку и вызвать функцию для каждого объекта через определенный интервал времени?
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/785 ... ion-on-ios
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»