javascript - 在 ionic 2 中等待 foreach 的执行继续下一步

标签 javascript ionic2 wait

我尝试在执行 for 循环后使用数组列表的值。

我的问题是,当我运行我的应用程序时,它会执行下一个函数,而无需等待我的 for 循环

这是我的 TS 代码,

convertToPDF(){
    let loader = this.loadingCtrl.create({
        content: "Generating..."
    })
    loader.present().then(_=>{
        this.TempNotesImagesList.forEach(n=>{
            this.convertToDataURLviaCanvas(n.url, "image/jpeg").then(base64Img => {
                this.images.push(base64Img);
            });
        })
    }).then(_=>{
        loader.dismiss();
        console.log(this.images); //Check images
        this.createPdfX(); //convert to PDF :D
    });

}

最佳答案

您需要 convertToDataURLviaCanvas 串行还是并行运行?

系列:

convertToPDF() {
    let loader = this.loadingCtrl.create({
        content: "Generating..."
    });
    loader.present()
    .then( _ => this.TempNotesImagesList.reduce((p, n) => p.then(_ => this.convertToDataURLviaCanvas(n.url, "image/jpeg").then(base64Img => {
        this.images.push(base64Img);
    })), Promise.resolve())).then(_ => {
        loader.dismiss();
        console.log(this.images); //Check images
        this.createPdfX(); //convert to PDF :D
    });
}

并行:

convertToPDF() {
    let loader = this.loadingCtrl.create({
        content: "Generating..."
    });
    loader.present()
    .then( _ => Promise.all(this.TempNotesImagesList.map(n => this.convertToDataURLviaCanvas(n.url, "image/jpeg").then(base64Img => this.images.push(base64Img)))))
    .then(_ => {
        loader.dismiss();
        console.log(this.images); //Check images
        this.createPdfX(); //convert to PDF :D
    });
}

关于javascript - 在 ionic 2 中等待 foreach 的执行继续下一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46908366/

相关文章:

javascript - 将输入文本连接到 slider

javascript - Angular js中的默认值从服务器中选择

angular - Ionic 2 loader 没有在正确的时间显示

java - 让Java等待之前的Try完成

javascript - 如何使用 JQuery 将 css 属性应用于子元素

javascript - jQuery 仅适用于浏览器首次启动

ionic-framework - Ionic 应用程序在启动 14-15 秒后显示白屏

html - 在ionic中切换到另一个段时图表消失了,如何解决这个问题?

java - 同步传递的对象时,JFrame 卡住

javascript - 如何让 NodeJs 函数等待?