您正在做的事情并非不合理,应该可以正常工作。纯粹在可读性层面上,我可能会选择
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};
});
}
}