Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何控制节点中语句的执行流_Node.js - Fatal编程技术网

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”+位置),我不知道为什么

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做了什么,但当它有结果时(即异步),它将调用回调函数,这就是为什么原始问题中提到的行被称为最后一行-它们是回调的最后一行,在执行其余代码后调用