首页 > 解决方案 > 等待函数完成做其他事情 node.js 强大

问题描述

所以我的问题是代码末尾的 console.log() 总是在强大的表单解析完成之前打印,我不知道如何避免这种情况

exports.scrape =  (req,res) => {

let form = new formidable.IncomingForm();
form.keepExtensions = true;

 form.parse(req, (err, fields, files) => {
    if (err) {
        return res.status(400).json({
            error: 'Image could not be uploaded'
        });
    }
    const { endpoint } = fields;
    if (!endpoint ) {
        return res.status(400).json({
            error: 'All fields are required'
        });
    }
    if (files.file) {
     
        if (files.file.size > 1000000) {
            return res.status(400).json({
                error: 'Image should be less than 1mb in size'
            });
        }
        var oldPath = files.file.path;
        console.log(oldPath);
        var newPath = path.join(__dirname, '../src/files/csv')
            + '/'+files.file.name
         var rawData = fs.readFileSync(oldPath)
  
        fs.writeFile(newPath, rawData, function(err){
            if(err) console.log(err)
            return console.log(newPath);
        })
    
    }

})

console.log("测试!"); }

然后当解析完成后,我需要创建另一个操作,以便稍后在另一个脚本中使用它,该脚本将在解析结束时初始化,这将是 console.log("test!") 所在的位置

标签: javascriptnode.jsecmascript-6promiseformidable

解决方案


基本了解回调的工作原理。然后你会意识到将 console.log 放在底部并不是按时间顺序的结束。


推荐阅读