Это тест для сайта, где я проверяю, существуют ли источники фотографий или нет, если они не хотят скрывать дополнительную панель, которая будет показывать эти фотографии, если они существуют. Проблема в том, что я не могу получить состояние breakVar = true;
, и цикл тоже не остановится. Я пробовал разные способы, чтобы остановить его с помощью breaks/returns.Почему я не могу вырваться из этого цикла?
Я тестирую вывод testPhotos(currentProduct,display,breakVar);
, и я хочу получить возврат «test-fail», чтобы я мог скрыть дополнительную панель.
Да, этот код стал уродливым, так как я отчаянно пытался проверить состояния при выполнении кода.
Я пытался поставить break;
заявления в разных местах, но получаю ошибку «Illegal заявления перерыва»
я тест не в петле 8 раз в моей консоли.
var breakVar = false;
function triggerPhotoFail(breakVar) {
breakVar = true;
consol.log('triggerPhotoFail ran');
return "test-fail";
}
function testPhotos(currentProduct,display,breakVar) {
for (var i = 0; i < 5; i++) {
// test if photos exists
if (breakVar === true) {
break; // get out of loop
}
var src = productArray[currentProduct]['subphoto-' + i];
$.get(src)
.done(function() {
// photo exists
})
.fail(function(breakVar) {
// photo does not exist
console.log('test failed in loop');
breakVar = true;
triggerPhotoFail();
console.log('breakVar change!: ' + breakVar);
})
}
if (breakVar === true) {
console.log('breaker var tested true');
return "test-fail";
}
else {
return "not acknowledged";
}
}
хорошо, спасибо, я попробую, что – joehungjohn
эй, это здорово, как вы вложили функцию внутри функции, которую она вызывает, по какой-либо причине? очиститель? – joehungjohn
Он перестает быть «глобальным». – Quentin