zer*_*gen 1 javascript arrays jquery asynchronous
我试图将一些Javascript函数推入一个数组,用jQuery.when()调用它们,但是当这样做时,函数在放入数组时就已经被调用了.这是一个例子,这是我的代码片段:
var answers = someJSONFormattedData;
var calls = [];
function callWithIndex(i) {
var answer = answers[i];
api.loadUser(answer.userType, answer.userId, function(userData) {
answer.user = userData;
}, null)
};
for(var i=0;i<answers.length;++i) {
calls.push(callWithIndex(i));
}
$.when.apply($, calls).then(function() {
var dataAsJSON = {
'answers': answers
};
//do some magic stuff with dataAsJSON
});
Run Code Online (Sandbox Code Playgroud)
即使在做一个简短的测试代码片段时,也会立即调用test()函数,尽管我根本不会调用它,因为我只将它放入一个数组中(或至少尝试).
var test = function(i) {
console.log("test: "+i);
}
var testArray = [];
for(var i=0;i<5;++i) {
testArray.push(test(i));
}
Run Code Online (Sandbox Code Playgroud)
你需要push引用函数,而不是它的(undefined)结果:
试试这个:
calls.push(callWithIndex.bind(null, i));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
161 次 |
| 最近记录: |