У меня есть этот for
цикл:Как захватить локальную переменные асинхронный обратный вызов
for(var i = 0; i < characters.length; i++)
{
var character = characters[i];
charService.get(character.name).then(function (characterData)
{
//I want character to be captured here, i.e. the character in the current loop
character.data = characterData;
});
}
Как charService.get()
асинхронные, к тому времени, обратный вызов выполняется, character
является последним элементом массива (потому что петли), поэтому все предыдущие character
остались без данных.
Как я могу гарантировать, что character.data
внутри обратного вызова ссылается на character
цикла, выполнялся асинхронный метод?
использование ненадежный и передача параметров сделает сохраняться его –
Это был дан ответ [здесь ] (http://stackoverflow.com/questions/11488014/asynchronous-process-inside-a-javascript-for-loop), [здесь] (http://stackoverflow.com/questions/4288759/asynchronous-for-cycle -in-javascript) и [здесь] (http://stackoverflow.com/quest Ионы/21184340/асинхронный для цикла-в-узел-JS). – roperzh