您必须等待带有 async/await 的 TypeScript 2.0 才能支持 ES5,因为它现在仅支持 TS 到 ES6 的编译。
您可以使用async 创建延迟函数:
function delay(ms: number) {
return new Promise( resolve => setTimeout(resolve, ms) );
}
然后叫它
await delay(1000);
顺便说一句,您可以直接在Promise 上等待:
await new Promise(f => setTimeout(f, 1000));
请注意,您只能在 async 函数中使用 await。
如果你不能(假设你正在构建 nodejs 应用程序),只需将你的代码放在匿名的 async 函数中。这是一个例子:
(async () => {
// Do something before delay
console.log('before delay')
await delay(1000);
// Do something after
console.log('after delay')
})();
示例 TS 应用程序:https://github.com/v-andrew/ts-template
在 OLD JS 中你必须使用
setTimeout(YourFunctionName, Milliseconds);
或
setTimeout( () => { /*Your Code*/ }, Milliseconds );
但是,对于每个支持 async/await 的主流浏览器来说,它的用处不大。
更新:
TypeScript 2.1 与 async/await 一起发布。
当你编译到 ES5 时,不要忘记你需要 Promise 实现,而 Promise 在本机不可用。
PS
如果你想在原始文件之外使用它,你必须export the function。