#javascript
#javascript
Вопрос:
Я знаю, что название кажется немного странно описанным, но не совсем уверен, как иначе решить проблему 🙂
В любом случае, в консоли Chrome я выполняю следующий код:
var ids = [];
//Initialize ids
fetchIds("hamburgers", {
success: function(e) {
_.each(e, function(e) {
_.each(e.el, function(e) {
ids.push(e.ei);
})
}),
function() {};
}
});
Это работает просто отлично, и когда я набираю ids
в консоли, он содержит 5 элементов. Однако, если я добавлю КАКИЕ-либо последующие операторы, ids
будет очищен? Например, если я добавлю простой журнал:
var ids = [];
//Initialize ids
fetchIds("hamburgers", {
success: function(e) {
_.each(e, function(e) {
_.each(e.el, function(e) {
ids.push(e.ei);
})
}),
function() {};
}
});
console.log(ids.length);
Это выводит 0, как если бы ids
не содержало элементов, и если я попытаюсь использовать ids
в любом последующем операторе, он считается пустым? Почему это?
Комментарии:
1. Это, конечно, не должно происходить подобным образом. Можете ли вы попробовать утешение перед дополнительным оператором. Также я вижу «,» вместо «;» перед дополнительным оператором, который следует исправить. Хотя это не имеет никакого значения.
2. Это работает, когда я запускаю инструкции отдельно. Но я всегда просто выполнял несколько операторов одновременно — это было бы довольно громоздко :/
3. Вы отредактировали вопрос, и теперь оба примера кода одинаковы. Можете ли вы взглянуть на это еще раз? Также я спрашиваю, правы ли вы в консоли, если вы делаете это в самом обработчике успеха
4.
fetchIds
Содержит ли асинхронный процесс? Как вызов AJAX? Если это так, внешний скрипт достигнетconsole.log(...)
инструкции до того, как будет выполненsuccess
обратный вызов.5. То, что вы делаете во втором выполнении, просто по сути
var ids = []; setTimeout(function(){ids.push(1);}, 2000); console.log(ids.length);
, которое всегда возвращало бы 0 все время, потому что вы очистили список.
Ответ №1:
Возможно, функция fetchIds
является асинхронной функцией. поместить console.log(ids.length);
внутрь success
функции