TypeScript async / await 入门介绍与使用
从 1.7 版本开始,TypeScript 中提供了 async / await 关键字。 在新版本发布之前,它们被转换为使用 yield
的生成器函数。 在 2.1 中,async 和 wait 终于降级到 ES3 和 ES5,所以现在,我们可以使用这些特性来对浏览器进行兼容
地狱式的回调
JavaScript 是一种令人难以置信的强大语言。 通过其事件循环和非阻塞 I/O 特性,我们可以轻松构建异步应用程序。 过去,为了实现基于事件的结构,我们使用回调。 有时我们的代码如下所示:
setTimeout(function() {
console.log('First');
setTimeout(function() {
console.log('Second');
setTimeout(function() {
console.log('Third');
setTimeout(function() {
console.log('Fourth');
}, 500);
}, 1000);
}, 500);
}, 1000);
这是一个回调地狱。 可能,如果我们的代码更复杂,其他人要尝试理解它是相当的困难的
这不是一个好的解决方案。 他们有很多方法来处理它。 最常见的是 promise
。
什么是 Promise?
Promise 只是一个代表任务的对象。 它可能会立即完成,也可能会在一段时间内完成。 我们可以通过将回调传递给其 then
函数来与“任务”进行交互。 让我们使用 Promises 和箭头函数重写我们之前的示例。
const resolver = (msg, timeout) => new Promise((resolve) => {
console.log(msg);
setTimeout(resolve, timeout);
});
resolver('First', 500)
.then(() => resolver('Second', 500))
.then(() => resolver('Third', 1000))
.then(() => resolver('Fourth', 500));
看起来更简单,且更易于阅读——结果是相同的。
async / await
async 和 await 关键字在 C# 社区中是众所周知的。 它们允许我们以更同步的方式编写异步代码。 让我们使用这些特性再次重写我们的示例。
const resolver = (msg, timeout) => new Promise((resolve) => {
console.log(msg);
setTimeout(resolve, timeout);
});
async function run() {
await resolver('First', 1000);
await resolver('Second', 500);
await resolver('Third', 1000);
await resolver('Fourth', 500);
}
run();
它也做同样的事情。 对其工作原理的最简单解释是 await 接受一个 Promise 并等待直到任务完成。 如果方法至少有一个 await 关键字,则它必须在函数声明之前有 async 关键字。 就这样。
相关文章
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 Angular 中使用 TypeScript 的 getElementById 替换
发布时间:2023/04/14 浏览次数:153 分类:Angular
-
本教程指南提供了有关使用 TypeScript 在 Angular 中替换 document.getElementById 的简要说明。这也提供了在 Angular 中 getElementById 的最佳方法。
在 TypeScript 中使用 try..catch..finally 处理异常
发布时间:2023/03/19 浏览次数:181 分类:TypeScript
-
本文详细介绍了如何在 TypeScript 中使用 try..catch..finally 进行异常处理,并附有示例。
在 TypeScript 中使用 declare 关键字
发布时间:2023/03/19 浏览次数:97 分类:TypeScript
-
本教程指南通过特定的实现和编码示例深入了解了 TypeScript 中 declare 关键字的用途。
在 TypeScript 中 get 和 set
发布时间:2023/03/19 浏览次数:172 分类:TypeScript
-
本篇文章演示了类的 get 和 set 属性以及如何在 TypeScript 中实现它。
在 TypeScript 中格式化日期和时间
发布时间:2023/03/19 浏览次数:161 分类:TypeScript
-
本教程介绍内置对象 Date() 并讨论在 Typescript 中获取、设置和格式化日期和时间的各种方法。
在 TypeScript 中返回一个 Promise
发布时间:2023/03/19 浏览次数:182 分类:TypeScript
-
本教程讨论如何在 TypeScript 中返回正确的 Promise。这将提供 TypeScript 中 Returns Promise 的完整编码示例,并完整演示每个步骤。
在 TypeScript 中定义函数回调的类型
发布时间:2023/03/19 浏览次数:221 分类:TypeScript
-
本教程说明了在 TypeScript 中为函数回调定义类型的解决方案。为了程序员的方便和方便,实施了不同的编码实践指南。
在 TypeScript 中把 JSON 对象转换为一个类
发布时间:2023/03/19 浏览次数:110 分类:TypeScript
-
本教程演示了如何将 JSON 对象转换为 TypeScript 中的类。