Я разрабатываю веб-сайт на Angular 2 с использованием Typescript, и мне было интересно, есть ли способ реализовать thread.sleep(ms)
функциональность.
Мой вариант использования - перенаправить пользователей после отправки формы через несколько секунд, что очень просто в html или javascript, но я не уверен, как это сделать в Typescript.
Большое спасибо,
Ответы:
Вам нужно дождаться TypeScript 2.0 с
async
/await
для поддержки ES5, поскольку теперь он поддерживается только для компиляции TS в ES6.Вы можете создать функцию задержки с помощью
async
:И назови это
Обратите внимание, что вы можете использовать
await
только внутреннююasync
функцию.Если вы не можете ( скажем, вы создаете приложение nodejs ), просто поместите свой код в анонимную
async
функцию. Вот пример:Пример приложения TS: https://github.com/v-andrew/ts-template
В OLD JS вы должны использовать
или
Однако с каждым из основных браузеров поддержки
async
/await
она устарела.Только не забывайте, что вам нужна
Promise
реализация при компиляции в ES5, где Promise изначально недоступен.источник
await new Promise(resolve => setTimeout(resolve, 1000)).then(()=>console.log("fired"));
но это сработалоawait new Promise(resolve => setTimeout(()=>resolve(), 1000)).then(()=>console.log("fired"));
async
функцию. Я добавил примерЭто работает: (спасибо за комментарии)
источник
По какой-то причине принятый выше ответ не работает в новых версиях Angular (V6).
для этого используйте это ..
выше сработало для меня.
Использование:
ИЛИ более точный способ
источник
С
RxJS
:x
равно 0.Если вы даете второй аргумент ,
period
чтобыtimer
новый номер будет выделяться каждыйperiod
миллисекунды (х = 0 , то х = 1, х = 2, ...).См. Официальный документ для более подробной информации.
источник
Если вы используете angular5 и выше, включите приведенный ниже метод в свой ts файл.
затем вызовите этот метод delay (), где захотите.
например:
Это исчезнет сообщение рычания через 3 секунды.
источник
это работает лучше для меня
источник
Или вместо того, чтобы объявлять функцию, просто:
источник