嘿,我在这里有一个小问题。局部变量覆盖函数在循环中多次运行
问:我怎样才能创建一个功能独特的变量,这样多次调用时,变量将举行他们应该(不交换)
记住我必须保持同步的循环会大而不运行异步将非常难以达到性能
我有一个在画布上绘制项目的函数。然后,我在for循环中运行此函数以根据数组中的某些数据绘制几个画布。
因此简化版本:
function renderCanvas(canvas, dID) {
var mName, bName, sName, tName;
this.layerCounter = mainData[dID]['layerCount'];
console.debug(designID + " has " + layerCounter + " layers");
/* that gives 2 layers for first item and 3 for second)*/
tctx2.clearRect(0, 0, tc2.width, tc2.height);
var imgPath = sName;
imgObj = new Image();
imgObj.src = "img/" + imgPath;
imgObj.onload = function() {
tctx2.drawImage(imgObj, 0, 0, w, h, 0, 0, dw, dh);
layerCounter--;
console.debug(designID + " has " + layerCounter + " layers");
tctx3.clearRect(0, 0, tc2.width, tc2.height);
var imgPath = tName;
imgObj = new Image();
imgObj.src = "img/" + imgPath;
imgObj.onload = function() {
tctx3.drawImage(talphaObj, 0, 0, w, h, 0, 0, dw, dh);
layerCounter--;
console.debug(designID + " has " + layerCounter + " layers");
};
}
}
for (var i = 0; i < xArr.length; i++) {
var cDID = xArr[i];
renderCanvas(contexts[i], cDID);
}
有什么建议?我对编程相当陌生,所以我可能错过了一些非常简单的东西。
如果它的异步你想在这里使用闭包 – alfonsob
不理解你的问题..你想分配给这个变量的值是什么?顺便说一句的上下文[i]没有在你的代码 – Merlin