简体   繁体   English

Promise 返回到分辨率之前

[英]Promise returning to then before resovle

I have books object having data stored in file.我有书籍 object 将数据存储在文件中。 I am reading data from each file and creating books.我正在从每个文件中读取数据并创建书籍。

Here issue is createBooks promise then is getting called before completion of reading file and success of createBook method call.这里的问题是 createBooks promise 然后在读取文件完成和 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());
        });
  },

Try to log aPromises array values before Promise.all(aPromises) .尝试在Promise.all(aPromises)之前记录aPromises数组值。 Are there Promise<> objects?有 Promise<> 对象吗?

What does the this.Service.createBook(books) return? this.Service.createBook(books)返回什么?

FileReader does not have readFile method. FileReader没有readFile方法。

You should use oFileReader.onload handler您应该使用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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM