在处理用户请求时,服务器通常执行与计算响应直接相关的任务。但是,你可能需要执行日志记录、分析和其他外部系统同步等任务。
由于这些任务与响应没有直接关系,用户不应该等待它们完成。在响应用户后推迟工作是一个挑战,因为无服务器功能在响应关闭后立即停止计算。
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}</>;
}