nextjs的一些阻塞问题

68 阅读1分钟

在处理用户请求时,服务器通常执行与计算响应直接相关的任务。但是,你可能需要执行日志记录、分析和其他外部系统同步等任务。

由于这些任务与响应没有直接关系,用户不应该等待它们完成。在响应用户后推迟工作是一个挑战,因为无服务器功能在响应关闭后立即停止计算。

after()是一个新的实验性API,它允许您在响应完成流后安排要处理的工作,从而在不阻塞主响应的情况下运行辅助任务,从而解决了这个问题。

要使用它,请将experimental.after添加到next.config.js中:

const nextConfig = {
  experimental: {
    after: true,
  },
};
 
export default nextConfig;

然后,在服务器组件、服务器操作、路由处理程序或中间件中导入该函数。

import { unstable_after as after } from 'next/server';
import { log } from '@/app/utils';
 
export default function Layout({ children }) {
  // Secondary task
  after(() => {
    log();
  });
 
  // Primary task
  return <>{children}</>;
}