2016-08-22 4 views
0

У меня есть следующий код JavaScript:JavaScript/Сохранить контекст внутри функции Названия переменного асинхронных

for (var i = 0; i< uuids.length; i++){ 
    var attr = uuids[i] 
    var uuid = attr["uuid"]; 
    console.log("uuid is: " + uuid) 
    multiClient.hget(var1, var2, function(err, res1){ 
      console.log("uuid INSIDE hget is: " + uuid) 
     } 
} 

hget является методами асинхронной. Вот отпечатки этой функции:

"uuid is: 1" 
"uuid is: 2" 
"uuid INSIDE hget is: 2" 
"uuid INSIDE hget is: 2" 

Я хотел бы сохранить контекст UUID внутри функции hget, так что я получаю:

"uuid is: 1" 
"uuid is: 2" 
"uuid INSIDE hget is: 1" (where all the context before the loop has saved for this uuid) 
"uuid INSIDE hget is: 2" (where all the context before the loop has saved for this uuid) 

Как я могу это сделать?

ответ

1

Следующий код

multiClient.hget(var1, var2, function(err, res1){ 
    console.log("uuid INSIDE hget is: " + uuid) 
} 

uuid значение будет значение, когда операция асинхронной завершена.

Вы можете решить эту проблему с помощью анонимной функции, выполнив и скопировав значение uuid в другую переменную, сообщите uuid_temp и используйте это значение, как показано ниже.

(function() { 
    var uuid_temp = uuid; 
    multiClient.hget(var1, var2, function(err, res1){ 
     console.log("uuid INSIDE hget is: " + uuid_temp); //note uuid_temp here 
    } 
}()); 
Смежные вопросы