【问题标题】:Wait for function to finish to do something else node.js formidable等待函数完成做其他事情 node.js 强大
【发布时间】:2021-07-15 04:03:05
【问题描述】:

所以我的问题是代码末尾的 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!" ) 是

【问题讨论】:

  • 这和Java有什么关系?你知道 Java 和 JavaScript 是两种完全不同的语言,对吧?
  • 是的,谢谢,我现在编辑了标签
  • 你想将你的函数声明为异步并等待需要一些时间来执行。
  • 在这里做额外的事情:console.log(newPath)

标签: javascript node.js ecmascript-6 promise formidable


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-04
    相关资源
    最近更新 更多