javascript - 使用Async await 不等待函数返回
问题描述
var async = require('asyncawait/async');
var await = require('asyncawait/await');
异步功能:
var uploadResponse = async(function() {
var uploadresult = await (fileUploadFun.reportFileUpload(files,title,name));
console.log("waiting",uploadresult); // undefined
var selection = db.Sections.create({
// use uploadresult
}).then(() => {
console.log("sections created");
})
return 'result';
})
uploadResponse().then(function(result) {
console.log("upload", result);
res.redirect("back")
})
等待功能:
reportFileUpload: function(uploadFileData, title,reportPath) {
fs.readdir(reportPath, (err, files) => {
var filenames = files.map(file => file.replace(file, file.split('.')[0]));
var fileext = files.map(file => file.replace(file, file.split('.')[1]))
if (filenames.includes(title)) {
console.log("file exists already");
var index = filenames.indexOf(title);
var ext = fileext[index];
fs.unlink(filepath + title + '.' + ext, (err) => {
if (err) throw err;
uploadFileData.mv(filepath + title + extension, function (err) {
if (err) {
console.log("error",err);
return 'error';
} else {
return title;
}
});
});
}
else {
uploadFileData.mv(filepath + title + extension, function (err) {
if (err) {
console.log("error",err);
} else {
console.log("uploaded");
return title;
}
});
}
})
},
在异步内部,我需要等待上传文件的结果,然后在从 readdir 返回响应并上传后创建表。但是当我控制台等待返回它打印未定义并且等待不等待返回并执行下面的其他功能
解决方案
推荐阅读
- c# - UWP 应用无法在“BluetoothCacheMode.Uncached”模式下工作,只能在“BluetoothCacheMode.Cached”模式下工作,为什么?
- javascript - 返回内部的Javascript if语句
- react-native - React Native - “您当前正在使用 NODE_ENV 之外的缩小代码 === “生产” “
- c++ - 输出之前给出字符串的输入以查找回文
- javascript - 使用 httr 包中的 Post() 在 R 中捕获 href
- docker - 当从 linux 样式路径转换时,Docker 安装的卷将 ;C 添加到 Windows 路径的末尾
- sas - 您能在 SAS EG 中命名报告吗?
- c - 通过指向其成员的指针获取指向结构的指针
- php - 如何从第二个或第三个字符串分隔符爆炸回字符串?
- python - 用于匹配顺序无关紧要的相邻单词的正则表达式