Jquery синхронные проблемы
Итак, у меня есть основная функция, которая получает 2 канала. Моя проблема в том, что функция, работающая в асинхронном режиме, пропускает функцию оповещения (для тестирования) перед тем, как выполнить функцию для получения обоих каналов. Я уверен, что есть жизнеспособное решение, но оно заставляет меня чесать голову. вот сценарий Я очень признателен за помощь, спасибо!
function getFeeds(){
jQuery.getFeed({
url: 'proxy.php?url='+feed1,
success: function(feed) {
for(var i = 0; i < feed.items.length && i < 10; i++) {
var item = feed.items[i];
s_string += '<div class = \"cont_div a'+i+'\"><h2>'
/* + '<a href="'
+ item.link
+ '">'*/
+ item.title
/*+ '</a>'*/
+ '</h2></div>';
/* html += '<div class="updated">'
+ item.updated
+ '</div>';
html += '<div>'
+ item.description
+ '</div>';*/
}
}
});
jQuery.getFeed({
url: 'proxy.php?url='+feed2,
success: function(feed) {
for(var i = 0; i < feed.items.length && i < 10; i++) {
var item = feed.items[i];
s_string += '<div class = \"cont_div a'+i+'\"><h2>'
/* + '<a href="'
+ item.link
+ '">'*/
+ item.title
/*+ '</a>'*/
+ '</h2></div>';
/* html += '<div class="updated">'
+ item.updated
+ '</div>';
html += '<div>'
+ item.description
+ '</div>';*/
}
}
});
alert(s_string);
}
1 ответ
Решение
Вы должны обрабатывать два запроса как отдельные сроки:
- создать две переменные для показателей успеха
- поставить проверку внутри колбэков
- какой запрос завершается последним, будет выполняться
Код выглядит примерно так:
function getFeeds(finished_callback) {
var feed_a_finished = false,
feed_b_finished = false,
s_string = "";
jQuery.getFeed( {
url: 'proxy.php?url='+feed1,
success: function(feed) {
/* Your code ... */
feed_a_finished = true;
if (feed_a_finished && feed_b_finished) {
finished_callback();
}
}
});
feed_b_finished = false;
jQuery.getFeed({
url: 'proxy.php?url='+feed2,
success: function(feed) {
/* Your code ... */
feed_b_finished = true;
if (feed_a_finished && feed_b_finished) {
finished_callback();
}
}
});
}
getFeeds(function () {
alert(s_string);
});