JavaScript 使用await处理Promise拒绝并使用catch捕获
在本文中,我们将尝试理解如何在使用await的异步(带有async关键字前缀)函数(或方法)中使用try/catch块处理Promise的拒绝。
语法: 让我们首先快速查看下面的图示语法,我们可以在JavaScript中使用它来创建一个Promise:
let new_promise = new Promise ((resolve, reject) => {
// do something....
})
让我们看一个快速的示例,说明如何使用上述语法来创建一个promise:
示例 1: 在这个示例中,我们将简单地创建一个promise,该promise将成功解析包含要作为输出或结果打印出来的数据。
JavaScript
<script>
let new_promise = new Promise((resolve, reject) => {
resolve("GeeksforGeeks....!!");
});
console.log("Promise created: " + new_promise);
new_promise.then((result) => console.log(
"Data inside promise is : " + result));
</script>
输出:
Promise created: [object Promise]
Data inside promise is : GeeksforGeeks....!!
现在通过一个示例来分析promise的语法,让我们来看一下下面的示例,这将帮助我们以有效的方式理解我们的问题陈述。
示例2: 在这个示例中,我们将在一个函数(或方法)中创建一个promise,并且我们将该promise设置为拒绝状态(使用reject()方法)。在另一个函数(或方法)中,我们将在try块中调用该方法,并在catch()块中捕获错误。
JavaScript代码
<script>
function rejected_promise() {
return new Promise((resolve, reject) => {
reject(new Error(
"This promise is Rejected..."));
});
}
async function displayData() {
try {
await rejected_promise();
} catch (e) {
console.log("Error Message: ", e.message);
}
}
displayData();
</script>
输出:
Error Message: This promise is Rejected...
示例3: 在这个示例中,我们将在一个函数中创建一个被拒绝的Promise,创建Promise时我们将使用一个名为setTimeout()的定时器函数,在setTimeout()函数内部我们将传入reject()方法,然后在另一个函数中,我们将创建一个try/catch块,然后打印我们的结果。
JavaScript
<script>
function rejected_promise() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error(
"This Promise is Rejected..."));
}, 1000);
});
}
async function displayData() {
try {
await rejected_promise();
} catch (error) {
console.log("Error Message: ", error.message);
}
}
displayData();
</script>
输出:
Error Message: This Promise is Rejected...
极客教程