fabric.loadSVGFromURL在循环中调用时总是调用最后一个回调,而不是循环中的所有回调。 看起来像fabric loadSVGFromURL中的闭包问题。下面的代码总是在控制台日志中打印值2,告诉我们仅在最后一次迭代时调用回调。
代码
var paths = ['walking-0.svg', 'walking-1.svg', 'walking-2.svg'];
for (var i = 0; i < paths.length; i++) {
var path = paths[i];
fabric.loadSVGFromURL(path, (function (i) {
return function (objects, options) {
console.log(i); //always print 2, when the expected behaviour is to print all the three number starting from 0 to 2.
console.log(objects) //print only once, when it should print thrice
}
})(i));
}