为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

翻过高山走不出你 2018-12-19 18:14:56
为什么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        })      });
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

可以使用 Promse.all 获取所有数据,并在 then 里 res.json


思路供参考


Promise.all(

  files.iconImage

  .filter(icon => icon.size !== 0)

  .map(icon => new Promise((resolve, reject) => {

    fs.readFile(icon.path, (err, data) => {

      if (err) { return reject('读取文件失败') }

      resolve(new AV.File(icon.originalFilename, data).save())

    })

  }))

)

.then(dataArray => res.json({success: true, data: dataArray}))

.catch(error => res.send(error))


查看完整回答
反对 回复 2019-01-21
  • 1 回答
  • 0 关注
  • 452 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信