关于异步函数fs.readFile()中保存回调数据的问题 - CNode技术社区

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

为什么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);
回到顶部

AltStyle によって変換されたページ (->オリジナル) /