关于异步函数fs.readFile()中保存回调数据的问题
发布于 2 个月前 作者 lockeroots1 338 次浏览 来自 问答

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

AV.FileleanCloud中上传文件的一个方法。

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 回复

啥? AV.File (AV 文件),我们懂的,老铁稳。。。

你需要把 res.json 放到 then 的回调函数里。

theFile.save().then(function(theFile){
	console.log(theFile);
	dataArray.push(theFile);	  
	
	res.json({
		success: true,
		data: dataArray
	})
}).catch(console.error);
回到顶部