在Express中,从router.post()
中的函数代码返回Promise、resolve或reject,可以通过使用async/await
或返回一个Promise对象来实现。
async/await
:router.post('/', async (req, res) => {
try {
// 执行异步操作
const result = await someAsyncFunction();
res.send(result);
} catch (error) {
res.status(500).send(error.message);
}
});
在router.post()
的回调函数前加上async
关键字,使其成为一个异步函数。然后使用await
关键字等待异步操作的结果,可以是一个返回Promise的函数。如果异步操作成功,可以将结果通过res.send()
发送给客户端;如果发生错误,可以通过res.status(500).send(error.message)
发送错误信息。
router.post('/', (req, res) => {
return new Promise((resolve, reject) => {
// 执行异步操作
someAsyncFunction()
.then(result => {
resolve(result);
})
.catch(error => {
reject(error);
});
})
.then(result => {
res.send(result);
})
.catch(error => {
res.status(500).send(error.message);
});
});
在router.post()
的回调函数中,创建一个新的Promise对象,并在异步操作完成后调用resolve(result)
或reject(error)
来决议Promise。然后使用.then()
和.catch()
来处理Promise的结果或错误,将结果通过res.send()
发送给客户端,或发送错误信息。
以上两种方法都可以在Express的路由处理函数中实现从router.post()
中的函数代码返回Promise、resolve或reject。
领取专属 10元无门槛券
手把手带您无忧上云