async/await方法在Typescript中的实现
async/await方法是ES6新增的方法,自然在Typescript也是可以用的。
加上async关键字的函数将会变成异步函数,意思就是xxx
给出一个实例:
async function hello(): Promise<string> {
return "hello1";
}
hello().then(value => {
console.log(value);
}).catch(err => {
console.error(err);
});
console.log('hello2');
这段代码跑出来的结果将会是:
hello2
hello1
上述代码可以看出async函数返回的是一个Promise对象,使用then方法添加回调函数然后可以输出值。但代码不是顺序执行的,而是先走的“hello2”然后再走“hello1”,原因是then方法这个回调函数需要TS进入相应事件后才会被执行,所以“hello2”会提前被输出出来。
而await关键字则需要和async关键字一起使用才能发挥作用,比如在一个异步函数体内,我们加入await关键字进行代码改修:
async function hello(): Promise<string> {
return "hello1";
}
async function main(): Promise<void> {
try {
const value = await hello();
console.log(value);
} catch (err) {
console.error(err);
}
console.log('hello2');
}
main();
输出的结果将会变成如下形式:
hello1
hello2
await意思就是等待,异步函数体内等待await之前代码走完后再走后面的代码。
注意代码里改修的时候加入的try-catch语句,这是因为await命令后的Promise对象,运行会有rejected的情况出现,所以把await命令放在try-catch中。