あなたがしていることは不合理ではなく、うまくいくはずです。純粋に読みやすさのレベルで、私は
for(var i=1; i<496; i++) {
function get_callback(n) {
return function(term, def) {
myApp.quizlet[0].terms[n] = { term: term, definition: def};
};
}
myApp.getTerm(i, get_callback(i));
};
Function.bindの使用に慣れている場合:
function callback (n, term, def) {
myApp.quizlet[0].terms[n] = { term: term, definition: def};
}
for(var i=1; i<496; i++) {
myApp.getTerm(i, callback.bind(this,i));
}
最初の引数をにバインドすると、 and引数i
を取る「カリー化」関数になります。term
def
そしてもちろん、この恐ろしいハックがあります、家でこれを試さないでください。
for(var i=1; i<496; i++) {
try { throw i; }
catch (i) {
myApp.getTerm(i, function (term,def) {
myApp.quizlet[0].terms[i] = { term: term, definition: def};
});
}
}