javascript - 承诺回到解决之前
问题描述
我有书籍对象,其数据存储在文件中。我正在从每个文件中读取数据并创建书籍。
这里的问题是 createBooks 承诺,然后在读取文件完成和 createBook 方法调用成功之前被调用。
createBooks: function (books) {
return new Promise((resolve, reject) => {
const booksArray = Object.entries(books);
const aPromises = [];
booksArray.forEach(([key, value]) => {
if(value.data){
const oFileReader = new FileReader();
oFileReader.readFile(value.data)
.then((product) => {
aPromises.push(this.Service.createBook(books));
});
}
});
Promise.all(aPromises)
.then(results => resolve(results))
.catch(error => reject());
});
},
解决方案
尝试在aPromises
之前记录数组值Promise.all(aPromises)
。有 Promise<> 对象吗?
this.Service.createBook(books)
回报是什么?
FileReader
没有readFile
方法。
你应该使用oFileReader.onload
处理程序
oFileReader.onload = function(){
aPromises.push(this.Service.createBook(books));
};
oFileReader.readAsDataURL(value.data); // value.data - has to be File
// oFileReader.readAsText(value.data); // value.data - has to be blob
推荐阅读
- r - R:使用 FOR 循环和 IF-ELSE 构造来省略列中的奇数
- php - Heroku PHP 文档根问题
- database - 利用 Redis 中的 TTL 来建模这种关系的正确数据结构是什么
- python - 如何从电报深度链接中提取数据?
- javascript - react-select 下拉菜单在模态中打开
- c++ - 如何在使用 MinGW 32 编译的 Qt 框架中使用使用 MSVC 14.0 编译的库?
- sql - 查询性能改进建议?
- python - 在 Mac 上运行 S3 命令时获取“/usr/local/opt/python/bin/python2.7: bad interpreter: No such file or directo”
- python - 遍历文本文件的行并执行某些操作
- java - 反应式:缓存服务响应几个小时