我已经使用Promise很长一段时间了,我总是不喜欢看起来很笨重的代码。因此,我喜欢async / await(理论上)。
但是,您只能在异步函数中使用await。如果我当前将每个路由作为一个函数(ex export function createLike(req, res, next)
),那么该路由可以是async function
吗?如果我这样做,有什么我需要检查的吗?或者如果我这样做会发生奇怪的事情吗?我可以将函数保持为正常函数,其中调用async function
就像这样(如果是这样的话):
export function createLike(req, res, next) {
doStuff() // does this need to be "await doStuff()" if it's the only actionable call in the parent function?
async function doStuff() {
// do asynchronous stuff via async/await
res.status(200).send('success')
}
}
答案 0 :(得分:1)
export async function createLike(req, res, next) {
易peasy。将函数声明为异步只不过是让它返回Promise。
揭开你整个琐碎的榜样:
export async function createLike(req, res, next) {
// Don't bother putting inside a 'doStuff' if it's all you have.
// Get straight to the asyncing
const { something } = await someAsyncMethod();
const { foo } = await fetch(`/get/this/${something}`).then((r) => r.json());
console.log(foo);
res.status(200).send('success')
}
这将等到获得someAsyncMethod()
响应,然后在发送响应之前提取内容。
答案 1 :(得分:0)
使用koa
2+。它是为async/await
内容而构建的。