猿问

关于异步函数中保存回调数据的问题

为什么console.log(theFile)能输出数据,而不能保存到dateArray数组中。
如果要保存到dataArray数组中,是不是也要构造一个异步函数

code

        var dataArray = [];

        for(let i = 0; i < files.iconImage.length; i++) {

            // var iconFile = files.iconImage[i];

            if(files.iconImage[i].size !== 0){

              fs.readFile(files.iconImage[i].path, function(err, data){

                if(err) {

                  return res.send('读取文件失败');

                }

                var theFile = new AV.File(files.iconImage[i].originalFilename, data);

                theFile.save().then(function(theFile){

                  console.log(theFile);

                  dataArray.push(theFile);

                }).catch(console.error);

              });

            } else {

              res.send('请选择一个文件。');

            }

        }

        res.json({

            success: true,

            data: dataArray

        })

      });


翻过高山走不出你
浏览 453回答 1
1回答

幕布斯7119047

可以使用 Promse.all 获取所有数据,并在 then 里 res.json思路供参考Promise.all(&nbsp; files.iconImage&nbsp; .filter(icon => icon.size !== 0)&nbsp; .map(icon => new Promise((resolve, reject) => {&nbsp; &nbsp; fs.readFile(icon.path, (err, data) => {&nbsp; &nbsp; &nbsp; if (err) { return reject('读取文件失败') }&nbsp; &nbsp; &nbsp; resolve(new AV.File(icon.originalFilename, data).save())&nbsp; &nbsp; })&nbsp; }))).then(dataArray => res.json({success: true, data: dataArray})).catch(error => res.send(error))
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答