diff --git a/app.js b/app.js index ae34fa5..fe05cd3 100644 --- a/app.js +++ b/app.js @@ -941,11 +941,18 @@ function generateCombine() { const chart = echarts.init(holder, null, { renderer: 'canvas' }); chart.setOption(option); setTimeout(() => { - const cvs = holder.querySelector('canvas'); - if (!cvs) { reject(new Error('子图渲染失败')); return; } - resolve(cvs); + const srcCvs = holder.querySelector('canvas'); + if (!srcCvs) { reject(new Error('子图渲染失败')); return; } + // 关键:先把内容复制到独立 canvas 再 dispose。 + // 直接 resolve 原 canvas 的话,Promise 微任务在 chart.dispose() 之后才执行, + // 此时 canvas 内容已被 echarts 清空,合并出来就是白图。 + const copy = document.createElement('canvas'); + copy.width = srcCvs.width; + copy.height = srcCvs.height; + copy.getContext('2d').drawImage(srcCvs, 0, 0); chart.dispose(); holder.remove(); + resolve(copy); }, 80); });