我怎樣才能得到那個返回值?而不是:從關閉中返回一個變量
this.setCanvas = function(files){
var numItems = files.length - 1;
this.items = {};
var i = 0;
for(i=0;i<=numItems;i++)
{
var file = files[i];
var reader = new FileReader();
reader.onload = (function(i) {
return function(e) {
var something = that.whatever();
items[i] = something;
};
})(i);
reader.readAsDataURL(file);
}
console.log(items);
}
我需要項目[i]定義。如果我在閉包之外的console.log items [i]它是未定義的。
謝謝。我最終通過函數傳遞了項目。你的榜樣讓我朝着正確的方向前進。我仍然不完全理解這一切,但這是一個完整的問題。 ) –
剛做了一個小小的更新。而不是'this.items = []',我只是將它作爲一個變量,這允許閉包(處理程序)更容易地訪問它;否則'onload'處理程序將不知道在試圖獲取「items」時要使用哪個'this'。僅供參考,'onload'處理程序由JavaScript引擎調用,您會發現'this'引用指向'reader'實例。 – Peter