我已经使用Promises很长时间了,我一直不喜欢笨重的编写代码。所以我喜欢异步/等待(理论上(是有道理的。
但是,您只能在异步函数中使用 await。如果我目前将每条路由作为一个函数(例如 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')
}
}
export async function createLike(req, res, next) {
简单易行。将函数声明为异步只不过是让它返回一个 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()
的响应,然后获取一些东西,然后再发送响应。
使用 koa
2+。它是为async/await
东西而建造的。