将快递应用程序从承诺转换为异步/等待



我已经使用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东西而建造的。

最新更新