#jquery #asynchronous #jfeed
#jquery #асинхронный #jfeed
Вопрос:
Итак, у меня есть базовая функция, которая получает 2 канала. Моя проблема в том, что функция, выполняющаяся асинхронно, переходит к функции оповещения (для тестирования), прежде чем она выполнит функцию для получения обоих каналов. Я уверен, что есть жизнеспособное решение, но это заставляет меня ломать голову. вот сценарий. Я был бы очень признателен за помощь, спасибо!
function getFeeds(){
jQuery.getFeed({
url: 'proxy.php?url=' feed1,
success: function(feed) {
for(var i = 0; i < feed.items.length amp;amp; 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 amp;amp; 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:
Вы должны обработать два запроса как отдельные временные рамки:
- создайте две переменные для показателей успеха
- поставьте галочку внутри обратных вызовов
- какой запрос завершится последним, выполнит ваш finished_callback
Код выглядит примерно так:
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 amp;amp; 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 amp;amp; feed_b_finished) {
finished_callback();
}
}
});
}
getFeeds(function () {
alert(s_string);
});