сделать цикл, ожидающий завершения предыдущего прохода

<script type='text/javascript'>
function pageLoad(links,site)
{
var links = links.split(","); 
for (i = 0; i < links.length; i++) { 
    var link = links[i]
    $('#info'+(i+1)).html('Processing');
    setTimeout($.post( 
         "downloadlinks.php",
         { link: link, site: site, iter:i},
         function(data) {
            if(date == "ok")
            {
                $('#info'+(i+1)).html('Finished');
            }else
            {
                $('#info'+(i+1)).html('Failed');
            }
         }), 10000);
    }
 }
</script>

привет, это мой скрипт, который я сделал, но я не хочу, чтобы он публиковал каждый проход одновременно, мне нужно, чтобы он дождался завершения предыдущего прохода.

Как я могу это сделать?

Мэтт


person Matt Moseley    schedule 22.11.2014    source источник
comment
Если вы используете jQuery, обновите теги.   -  person j08691    schedule 22.11.2014


Ответы (1)


Используйте рекурсивный способ вместо цикла.

<script type='text/javascript'>
function pageLoad(links,site)
{
var links = links.split(","); 
var i=0;
postNow();
function postNow() { 
    var link = links[i]
    $('#info'+(i+1)).html('Processing');
    $.post( 
         "downloadlinks.php",
         { link: link, site: site, iter:i},
         function(data) {
            if(date == "ok")
            {
                $('#info'+(i+1)).html('Finished');
            }else
            {
                $('#info'+(i+1)).html('Failed');
            }
            i++;
            if (i<links.length){
                postNow();
            }
         });
    }
 }
</script>
person Sampath Liyanage    schedule 22.11.2014