Javascript 当我每N秒迭代一次将src附加到图像时,出现了一些错误

Javascript 当我每N秒迭代一次将src附加到图像时,出现了一些错误,javascript,jquery,Javascript,Jquery,当我使用javascript代码执行此操作时,出现了一些问题 function sleep(delay) { var start = new Date().getTime(); while (new Date().getTime() < start + delay); } //submit data with jQuery AJAX function onSuccess(data) { var millisecond

当我使用javascript代码执行此操作时,出现了一些问题

 function sleep(delay) {
        var start = new Date().getTime();
        while (new Date().getTime() < start + delay);
    }
    //submit data with jQuery AJAX
    function onSuccess(data) {
        var millisecondsToWait = $("#range").val() * 1000;

        obj= JSON.parse(data)
        for (var x of obj.Images_Url)
        {
            $("#left_image").attr('src', x.Item1);
            $("#right_image").attr('src', x.Item2);
            sleep(millisecondsToWait);
        }
只显示带有
url5
url6
我不知道为什么会这样
但我假设浏览器或渲染挂起,因为我没有使用任何线程或任务,所以请任何人知道如何修复此问题,执行队列清空时,即代码运行到完成时,会发生渲染。因此,您将只看到最后两幅图像

你可以这样做:

让numbersToShow=[1,2,3,4,5,6,7],
left=document.getElementById('left'),
right=document.getElementById('right');
按Pairatinterval(numbersToShow,2000)显示数字;
函数showNumbersByPairAtInterval(数字显示、间隔、索引){
指数=指数| | 0;
设slice=numbersToShow.slice(索引,索引+2),
nextIndex=指数+2;
left.textContent=切片[0];
right.textContent=slice[1];

如果(nextIndex如果您只是尝试以定时的速度迭代图像url的数组,您可以这样做,间隔1秒:

var obj = JSON.parse(data);
var k = 0;
var total = obj.Images_Url.length;
setInterval(function () {
    if (k < total) {
        $("#left_image").attr('src', obj.Images_Url[k].Item1);
        $("#right_image").attr('src', obj.Images_Url[k].Item2);
        k++;
    }
}, 1000);
var obj=JSON.parse(数据);
var k=0;
var total=obj.Images\u Url.length;
setInterval(函数(){
如果(k<总数){
$(“#left_image”).attr('src',obj.Images_Url[k].Item1);
$(“#right_image”).attr('src',obj.Images_Url[k].Item2);
k++;
}
}, 1000);

你确定代码/json字符串是正确的吗?
item1
!=
item1
Omg…不要做类似于
sleep
的事情。你只有一个线程,你当然不想阻止它。使用异步计时器,如
setInterval
setTimeout
。当我在后台编码时,我只是使用Task。延迟和async并等待做这样的事情,但我对javascript不是很在行,抱歉,稍加修改,它就像一个魔咒,我很高兴我能帮上忙!
var obj = JSON.parse(data);
var k = 0;
var total = obj.Images_Url.length;
setInterval(function () {
    if (k < total) {
        $("#left_image").attr('src', obj.Images_Url[k].Item1);
        $("#right_image").attr('src', obj.Images_Url[k].Item2);
        k++;
    }
}, 1000);