これは、写真ソースが存在するかどうかを確認するサイトのテストです。この写真が存在しない場合、これらの写真が表示される余分なパネルを非表示にします。問題は私が出てくるbreakVar = true;
状態を得ることができないとループはどちらも停止しない、私はブレーク/リターンで停止するためにそれを得るためにさまざまな方法を試してみました。なぜforループから抜け出せないのですか?
私はtestPhotos(currentProduct,display,breakVar);
の出力をテストしています。私は余分なパネルを隠すことができるので、 "テスト失敗"の戻り値を取得したいと思います。
ええ、私は必死にコード実行中の状態をチェックしようとしたので、醜いコードになりました。
私は別の場所でbreak;
文を入れてみましたが、私はテストが私のコンソールでループで8回失敗し得る「不正なbreak文」エラー
取得しました。
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
'i'がグローバルになるのを止めます。 – Quentin