Node.js 如何控制节点中语句的执行流
在这个程序中,语句Node.js 如何控制节点中语句的执行流,node.js,Node.js,在这个程序中,语句uploader=req.body.uploader;位置='assets/posts/'+req.file.filename;console.log(上传器+“1”+位置),我不知道为什么 async uploadpostHandler(req, res) { const postStorage = multer.diskStorage({ destination: (req,file,cb) => { cb(null,P
uploader=req.body.uploader;位置='assets/posts/'+req.file.filename;console.log(上传器+“1”+位置)在uploadPostHandler()中的所有语句执行完成后执行PostLoad()中的代码>,我不知道为什么
async uploadpostHandler(req, res) {
const postStorage = multer.diskStorage({
destination: (req,file,cb) => {
cb(null,POSTS);
},
filename: (req,file,cb) => {
cb(null, Date.now()+path.extname(file.originalname));
}
});
const postUpload = multer({storage: postStorage}).single('post');
let post = {
type: 0,
noOflikes: 0,
noOfcomments: 0,
likedBy: [],
comments: [],
shares: 0
};
var uploader = "";
var location = "";
postUpload(req,res,(err) => {
//console.log(req.file);
//console.log(req.body);
if(err) {
res.status(501).json({
error: true,
message: 'Internal Server Error1'
});
console.log(err);
}
uploader = req.body.uploader;
location = 'assets/posts/' + req.file.filename;
console.log(uploader+" 1 "+location);
});
try{
post.uploader = await uploader;
post.location = await location;
console.log(post.uploader+" 2 "+post.location);
const result = await PostQueryHandler.savePost(post);
if(result == null || result == undefined || result == "") {
res.status(501).json({
error: true,
message: 'DataBase Error'
});
}
else{
res.status(201).json({
error: false,
message: 'SuccessFully Uploaded'
});
}
} catch(err) {
res.status(501).json({
error: true,
message: 'Internal Server Error2'
});
console.log(err);
}
}
传递给postopload
(即postopload()
)的一个参数是在稍后时间点调用的函数。执行流从postpload
行直接跳到post.uploader=wait uploader代码>行。我不知道multer做了什么,但当它有结果时(即异步),它将调用回调函数,这就是为什么原始问题中提到的行被称为最后一行-它们是回调的最后一行,在执行其余代码后调用