私はここで大きな問題に直面しています。この JavaScript 関数を呼び出すたびにleft
、right
画像が読み込まれるまで待機しませんが、すぐに次の操作に進みます。画像が完全に読み込まleft
れるまで停止してから、行right
に行くsyllable_text.html(slice.The_Syl);
function showImagesByPairAtInterval(Syllables, interval, index) {
index = index || 0;
let slice = Syllables[index];
left.attr('src', "http://example.com/"+ slice.Url1);
right.attr('src', "http://example.com/"+ slice.Url2);
syllable_text.html(slice.The_Syl);
nextIndex = index + 1;
if (nextIndex <= Syllables.length - 1) {
setTimeout(showImagesByPairAtInterval.bind(
null,
Syllables,
interval,
nextIndex
), interval);
}
}
ここで、この関数を呼び出す方法
showImagesByPairAtInterval(syllables.Syllables, 3000);
そしてここに2枚の画像があります
<div id="images" style="display: flex;">
<img src="" id="left_image" name="left_image" alt="" />
<img src="" id="right_image" name="right_image" alt="" />
</div>
更新されたスクリプト
ImagesLoadedで見つけたImagesLoadedスクリプトを使用した後
function showImagesByPairAtInterval(Syllables, interval, index) {
index = index || 0;
let slice = Syllables[index];
left.attr('src', "http://deaf-api.azurewebsites.net/"+ slice.Url1);
right.attr('src', "http://deaf-api.azurewebsites.net/"+ slice.Url2);
while (!$("#images").imagesLoaded().always()) {
}
syllable_text.html(slice.The_Syl);
nextIndex = index + 1;
if (nextIndex <= Syllables.length - 1) {
setTimeout(showImagesByPairAtInterval.bind(
null,
Syllables,
interval,
nextIndex
), interval);
}
}
すべての画像の読み込みがいつ終了するかはあまり気にしないようです。このスクリプトを使用する別の方法があると思います。