在 Node.js 中,使用嵌套的 Promises 处理错误的一种推荐方法是使用 .catch()
方法捕获错误
function asyncFunction1() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Result from asyncFunction1');
}, 1000);
});
}
function asyncFunction2() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('Error from asyncFunction2'));
}, 1000);
});
}
asyncFunction1()
.then((result1) => {
console.log(result1);
return asyncFunction2();
})
.then((result2) => {
console.log(result2);
})
.catch((error) => {
console.error('Error:', error.message);
});
在这个例子中,asyncFunction1
和 asyncFunction
都返回一个 Promise。我们首先调用 asyncFunction1
,然后在 .then()
方法中处理结果,并调用 asyncFunction2
。如果 asyncFunction2
成功,则会在下一个 .then()
中处理其结果。如果任何一个 Promise 被拒绝,.catch()
方法将捕获错误并处理它。
另一种方法是使用 async/await
语法,这可以使代码更具可读性:
async function run() {
try {
const result1 = await asyncFunction1();
console.log(result1);
const result2 = await asyncFunction2();
console.log(result2);
} catch (error) {
console.error('Error:', error.message);
}
}
run();
在这个例子中,我们使用 async/await
语法来处理嵌套的 Promises。await
关键字会等待 Promise 完成,并将结果赋值给变量。如果在任何时候发生错误,try/catch
块将捕获错误并处理它。
领取专属 10元无门槛券
手把手带您无忧上云