我正在使用Fabric.js(除其他外)在循环中加载图像,并相应地定位它们。似乎存在某种时间/刷新问题 - 以下代码有效:
for (var x = 0; x < rewardImages.length; x++) {
//add reward sticker:
if (rewardPHPositions[x] != undefined) {
fabric.Image.fromURL(rewardImages[x], function (oImg) {
canvas.add(oImg); canvas.renderAll();
}, { "height": 128, "width": 128, "left": rewardPHPositions[x][0], "top": rewardPHPositions[x][1], "category": "RewardSticker" });
}
canvas.renderAll();
alert(x.toString());
}
但忽略警报会导致没有加载图像。这几乎就像需要延迟或者需要一些阻塞来减慢循环的执行速度。我认为只要我在回调中调用canvas.add(它应该只在图像加载时运行)我本来应该没问题,但显然有些东西丢失了。
我已经尝试将代码移出到建议here的闭包中,并且我已尝试尝试使用renderAll调用的不同展示位置,但无济于事。有什么想法吗?