У меня есть следующий код с Angular.js:JavaScript/сохранить значения переменных с обратным вызовом
$scope.createSSH = function(){
for (var j=0; j<allGroupsArrays.length; j++){
for (var i=0; i<$scope.appArray.length; i++){
allGroupsArrays[j][i][6] = Boolean(0);
allGroupsArrays[j][i][7] = Boolean(0);
// Some irrelvant code
WClient.createSSHK(allGroupsArrays[j][i][2], allGroupsArrays[j][i][3], allGroupsArrays[j][i][4], i, allGroupsArrays[j], allGroupsArrays[j][i][7], j).then(
function(data) {
console.log("The j is: " + j)
console.log("The i is: " + i)
},
function(message) {
console.log("Error")
}
Когда обратный вызов поддерживаются, я замечаю, что значение j
и i
переменных было банкнота сохранить. Вместо этого, он печатает следующее:
The j is: 5
The i is: 3
Они даже тогда, когда обратный вызов был выполнен было i
0 и j
был 0.
Как сохранить значение контекста переменного?
Это правильно. Вы всегда будете получать эти значения. Это потому, что во время выполнения цикла обратный вызов не будет вызван до создания createSSHK. Помните, что это асинхронно. Вам может потребоваться передать эту переменную для создания SSHK, а затем принять ее в обратном вызове. –