NextJS API 端点中的 NextJS 服务器操作使用情况 - 并发与否?

问题描述 投票:0回答:1

我通过实践了解到:NextJS 服务器操作是同步的

我想实现并发;我喜欢将其抽象化的语法;因此我创建了一个具有以下语法的 NextJS API 端点:

import { handleError } form '@/lib/utils';
import { z } from 'zod';

const schema = z.object({ .. }); // some random unrelated zod schema

export async function POST(req: Request) {
  try {
    const myArgs = schema.parse(await req.json());

    const data = await myServerAction(myArgs);

    return Response.json({ data }, { status: 200 });
  } catch (error) {
    return handleError(error, req);
  }

但是,我并不完全肯定这会同时运行。

有没有人可以自信地说/证明这确实是并发的,而不是像服务器操作那样同步?

next.js concurrency server-side nextjs14
1个回答
0
投票

尽管任何地方都没有这方面的文档,但我已经测试了很多次,答案就在这里

Network tab of multiple requests

代码:

// api/relevant-chapters/route.ts
import { myServerAction } from '../actions.ts';
export async function GET(req: Request) {
  const result = await myServerAction();
  return Response.json({data: result});
}

// actions.ts
'use server';
export const myServerAction = async () => {
  return await someAsyncQuery();
};

结论:是的,当您在 API 路由处理程序中导入服务器操作时,它会同时运行。

© www.soinside.com 2019 - 2024. All rights reserved.