2011-12-24 6 views
2

Я читал, как новые функции jQuery Deferred/promise/when//then можно использовать для упрощения работы с несколькими асинхронными событиями, такими как запросы AJAX.Есть ли способ использовать функции отложенного/обещания/когда/то jQuery для нескольких вызовов ajax в цикле?

Но все примеры, которые я читал, говорят о множестве запросов, которые известны заранее.

$.when($.ajax("/page1.php"), $.ajax("/page2.php")).then(myFunc, myFailure); 

(Заимствованные из Coding Freak's answer here)

А когда вы их не знаете заранее, например, вызов тот же страничной веб API в цикле с различными параметрами, такими как некоторые особенности API MediaWiki и StackExchange - есть ли способ использовать эти новые функции jQuery в этом случае или нам нужно вернуться к старому?

+2

Посмотрите мой ответ здесь: http://stackoverflow.com/questions/6647527/jquery-deferred-do -i-need-pipes-or-chains-to-reach-this-pattern/6648219 # 6648219 –

+1

Или этот вопрос/ответ -> http://stackoverflow.com/questions/4785724/queue-ajax-requests-using- jquery-queue – ManseUK

+1

Возможный дубликат [jQuery $ .when() с переменными аргументами] (http://stackoverflow.com/questions/8011652/jquery-when-with-variable-arguments) –

ответ

-3

Вы можете вызвать функцию как ajaxloop ('/') page1.php

function ajaxloop(url) 
{ 
    $.ajax({ 
      url:url, 
      success:function() 
         { 
        if(url=='/page1.php') 
         { 
         ajaxloop('/page2.php') 
         } 
        else 
        { 
         ajaxloop('/page1.php') 
         } 
       } 
    }); 
} 
+0

Я думаю, что я не понимаю этого один ... – hippietrail

+0

дайте мне конкретный вопрос, который вы пытаетесь зацикливать на jquery или нет. –

+0

Похоже, вам нужно знать точное количество итераций раньше времени и включить встроенный код для этих точных итераций. – hippietrail