登录
首页 >  文章 >  前端

JavaScript Promise 返回数组时,为什么 e 的长度始终为 0 ?

时间:2024-10-30 19:42:49 373浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习文章的朋友们,也希望在阅读本文《JavaScript Promise 返回数组时,为什么 e 的长度始终为 0 ?》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新文章相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

JavaScript Promise 返回数组时,为什么 e 的长度始终为 0 ?

javascript promise 返回数组的显示问题

原本使用 promise 返回数组的代码,却遇到了 e 的长度永远为 0 的问题,且 e[0] 为 undefined。

解决方案:

将代码修改如下:

let element = document.querySelectorAll('.test')
let promise = new Promise((resolve,reject) => {
    let imgs = []
    for (var i = 0; i < element.length; i++) {
        html2canvas(element[i],{
            useCORS: true,
            allowTaint: false,
            logging: true
        }).then(function(canvas) {
            let ctx = canvas.getContext("2d")
            let page = document.createElement("canvas")
            page.width = canvas.width
            page.height = canvas.height
            page.getContext("2d").putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0)
            imgs.push(page.toDataURL("image/jpeg", 1.0))
        })
    }
    if (imgs.length === element.length) {
        resolve(imgs);
    }
})
promise.then(e => {
    console.log(e, e.length)
})

修改点:

  • 将 resolve(imgs) 移动到 imgs.push(page.todataurl("image/jpeg", 1.0)) 后面。
  • 新增判断 if (imgs.length === element.length),当 imgs 数组长度等于元素数量时才执行 resolve。

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于文章的相关知识,也可关注golang学习网公众号。

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>