Typescript 수면
Typescript를 사용하여 Angular 2에서 웹 사이트를 개발 중이며 thread.sleep(ms)
기능 을 구현하는 방법이 있는지 궁금 합니다.
내 사용 사례는 html 또는 javascript에서 매우 쉬운 몇 초 후 양식을 제출 한 후 사용자를 리디렉션하는 것이지만 Typescript에서 수행하는 방법을 모르겠습니다.
감사합니다.
당신과 타이프 2.0 기다릴 필요가 async
/ await
지금 만 ES6 컴파일에 TS 지원으로 ES5 지원.
다음을 사용하여 지연 기능을 만들 수 있습니다 async
.
function delay(ms: number) {
return new Promise( resolve => setTimeout(resolve, ms) );
}
그리고 그것을 불러
await delay(300);
await
내부 async
기능 만 사용할 수 있습니다 .
할 수없는 경우 ( 예를 들어 nodejs 애플리케이션을 빌드한다고 가정 해 보겠습니다 ) 익명 async
함수에 코드를 배치하십시오 . 다음은 예입니다.
(async () => {
// Do something before delay
console.log('before delay')
await delay(1000);
// Do something after
console.log('after delay')
})();
JS에서는 사용해야합니다.
setTimeout(YourFunctionName, Milliseconds);
또는
setTimeout( () => { /*Your Code*/ }, Milliseconds );
업데이트 : TypeScript 2.1이
async/await
.
Promise
Promise를 기본적으로 사용할 수없는 ES5로 컴파일 할 때 구현 이 필요하다는 것을 잊지 마십시오 .
이것은 작동합니다 : (댓글 감사합니다)
setTimeout(() =>
{
this.router.navigate(['/']);
},
5000);
어떤 이유로 위의 수락 된 답변은 Angular (V6)의 새 버전에서 작동하지 않습니다.
그 사용을 위해 ..
async delay(ms: number) {
await new Promise(resolve => setTimeout(()=>resolve(), ms)).then(()=>console.log("fired"));
}
위는 나를 위해 일했습니다.
용법:
this.delay(3000);
또는 더 정확한 방법
this.delay(3000).then(any=>{
//your task after delay.
});
와 함께 RxJS
:
const delay_observable = of('').pipe(delay( * your delay in ms * ));
delay_observable.subscribe(s => { *your action here* });
// Rest of the code continues to execute, your action will be done when time comes
그리고 RxJS 지시문을 적절하게 포함해야합니다. 예를 들어 Angular에서는 다음이 필요합니다.
import { Observable, of } from 'rxjs';
import { delay } from 'rxjs/operators';
angular5 이상을 사용하는 경우 ts 파일에 아래 방법을 포함하십시오.
async delay(ms: number) {
await new Promise(resolve => setTimeout(()=>resolve(), ms)).then(()=>console.log("fired"));
}
그런 다음 원하는 곳에서이 delay () 메서드를 호출하십시오.
예 :
validateInputValues() {
if (null == this.id|| this.id== "") {
this.messageService.add(
{severity: 'error', summary: 'ID is Required.'});
this.delay(3000).then(any => {
this.messageService.clear();
});
}
}
3 초 후에 으르렁 거리는 메시지가 사라집니다.
또는 함수를 선언하는 대신 다음과 같이하면됩니다.
setTimeout(() => { console.log('hello'); }, 1000);
참고 URL : https://stackoverflow.com/questions/37764665/typescript-sleep
'program story' 카테고리의 다른 글
Visual Studio 2010 C # 코드 창에서 혼합 탭과 공백이 계속 표시되는 이유는 무엇입니까? (0) | 2020.09.11 |
---|---|
BigDecimal에서>, =, <와 같은 비교 연산자를 사용하는 방법 (0) | 2020.09.11 |
Reader를 InputStream으로, Writer를 OutputStream으로 변환하는 방법은 무엇입니까? (0) | 2020.09.11 |
패키지에있는 Python 모듈의 이름을 나열하는 표준 방법이 있습니까? (0) | 2020.09.11 |
C #에서 스트림을 사용하여 큰 텍스트 파일 읽기 (0) | 2020.09.11 |