老师讲到获取 postData 的数据是异步操作
我在每个 next() 方法的后面都添加了代码执行,原来我理解的结果是,所有的方法都调用结束。才会反向调用每个 next() 后面的代码。
理想结果应该是:1 => 2 => 3 => 4 => 5 => 6
但真实结果却是:1 => 2 => 6 => 3 => 4 => 5
请问老师,异步的中间件如果想得到 理想结果,该怎么写?
示例代码如下:
function getPostData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve({ username: "hzz", password: "123456" });
}, 2000);
});
}
// 请求开始整体拦截
app.use(function (req, res, next) {
console.log("1 服务接受请求开始了...");
next();
console.log("6 next 之后 -- 服务请求结束了...");
});
// postdata 异步解析获取
app.use(async function (req, res, next) {
console.log("2 post data 请求异步获取");
req.body = await getPostData();
console.log("\r\n3post data 请求结束");
next();
console.log("5 next 之后 -- post data");
});
// 接口入口
app.use("/api", function (req, res, next) {
console.log("4 /api 开头的接头请求进入");
next();
});