TypeScript 中访问 Promise 的值
要在 TypeScript 中访问 Promise 的值:
- 定义一个异步函数。
-
使用
await
运算符来等待承诺。 -
将使用
await
运算符的结果分配给变量。
// 👇️ const p: Promise<string>
const p = Promise.resolve('Example value');
async function example() {
try {
const value = await p;
console.log(value); // 👉️ "Example value"
} catch (err) {
console.log(err);
}
}
example();
通过将函数标记为异步,我们可以在其中使用 await
运算符。
await
运算符用于等待 Promise 被履行或拒绝。
一种简单的思考方式是 - 当使用
await
运算符时,我们在特定函数中的代码会停在使用await
的行上,直到 promise 被履行或拒绝。
与使用 then()
方法相比,这使我们的代码更易于阅读。
请注意
,我们将操作包装在try/catch
块中。
这是因为,如果 promise 被拒绝,我们希望能够在我们的 catch 块中访问原因。
// 👇️ const p: Promise<never>
const p = Promise.reject('An error occurred');
async function example() {
try {
const value = await p;
console.log(value);
} catch (err) {
console.log(err); // 👉️ "An error occurred"
}
}
example();
我们使用 Promise.reject()
方法来获得一个被拒绝的承诺。 当我们试图等待承诺时,我们的 catch 函数被调用并传递了拒绝的原因。
或者,我们可以使用 .then()
方法。
要在 TypeScript 中访问 Promise 的值,请在 Promise 上调用 then() 方法,例如 p.then(value => console.log(value))。 then() 方法接受一个函数,该函数将解析后的值作为参数传递。
const p = Promise.resolve('Hello world');
p.then((value) => {
console.log(value); // 👉️ "Hello world"
}).catch((err) => {
console.log(err);
});
我们使用 Promise.resolve()
方法来获取一个示例 Promise。
为了解决 promise,我们调用了 promise 对象的 then()
方法。
我们传递给 then() 方法的函数被调用,解析值作为参数。 我们可以在函数体中访问这个值。
请注意
,我们还使用了catch()
方法。
这是因为一个 Promise 可以有 3 个状态:
-
pending
- 初始状态,既不满足也不拒绝。 -
fulfilled
- 操作成功并且承诺已解决。 -
rejected
- 操作失败。
如果 promise 得到满足并且操作成功,我们传递给 then()
方法的函数将被调用。
如果 promise 被拒绝,我们可以在 catch()
方法中访问拒绝的原因(错误)。
const p = Promise.reject('An error occurred');
p.then((value) => {
console.log(value);
}).catch((err) => {
console.log(err); // 👉️ "An error occurred"
});
在这个例子中,我们使用了 Promise.reject
方法来获得一个被拒绝的 Promise。
这一次,我们的 catch 方法被调用并传递了拒绝的原因。
请注意
,我们从传递给then()
方法的函数返回的值被包装在一个 Promise 中,因此我们可以根据需要链接尽可能多的对该方法的调用。
const p = Promise.resolve('Hello world');
p.then((value) => {
console.log(value); // 👉️ "Hello world"
return value;
}).then((value) => {
console.log(value); // 👉️ "Hello world"
});
如果你不从回调函数返回值,你会隐式返回 undefined,它被包装在一个 Promise 中并由 then()
方法返回。
相关文章
在 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 中的类。