
javascript promise 返回数组的显示问题
原本使用 promise 返回数组的代码,却遇到了 e 的长度永远为 0 的问题,且 e[0] 为 undefined。
解决方案:
将代码修改如下:
立即学习“Java免费学习笔记(深入)”;
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。










