我正在用TypeScript在Angular 2中开发一个网站,我想知道是否有一种方法可以实现thread.sleep(ms)功能。
我的用例是在几秒钟后提交表单后重定向用户,这在JavaScript中非常容易,但我不确定如何在TypeScript中做到这一点。
我正在用TypeScript在Angular 2中开发一个网站,我想知道是否有一种方法可以实现thread.sleep(ms)功能。
我的用例是在几秒钟后提交表单后重定向用户,这在JavaScript中非常容易,但我不确定如何在TypeScript中做到这一点。
当前回答
import { timer } from 'rxjs';
import { take } from 'rxjs/operators';
await timer(1000).pipe(take(1)).toPromise();
这个比较适合我
其他回答
你也可以使用RxJS:
import { of } from 'rxjs';
import { delay } from 'rxjs/operators';
async yourFunction() {
yourCode;
await this.delay(5000);
yourCode;
}
delay(ms: number): Promise<any> {
const dummyObservable = of();
return dummyObservable.pipe(delay(ms)).toPromise();
}
RxJS:
import { timer } from 'rxjs';
// ...
timer(your_delay_in_ms).subscribe(x => { your_action_code_here })
X = 0。
如果你给timer第二个参数period,每一周期毫秒就会产生一个新的数字(x = 0然后x = 1, x = 2,…)
详见官方文档。
这是有效的:(感谢评论)
setTimeout(() =>
{
this.router.navigate(['/']);
},
5000);
import { timer } from 'rxjs';
import { take } from 'rxjs/operators';
await timer(1000).pipe(take(1)).toPromise();
这个比较适合我
或者不声明一个函数,简单地说:
setTimeout(() => {
console.log('hello');
}, 1000);