jquery each ajax

0

Cześć,
mam kod:

$.each(array, function(index, value) {
ajaxSendData(value);
});

ja zrobić aby kolejne wywołania funkcji

ajaxSendData

wykonały się dopiero, jak otrzymamy np. true ?
Pytam, bo mam kilka tys wpisów w tablicy i nie chcę zajechać przeglądarki.. :D

0

Dlaczego wysyłasz je pojedynczo a nie wszystkie razem?

0

Chciałem to obrobić w php, ale wywala serwer przez długi czas odpowiedzi - dlatego przesyłam pojedynczy wpis w pętli. Ale jak odpalę each to odpali się parę tysięcy razy ajax i zawiesza przeglądarkę.. ;/
Jakiś pomysł na obejście tego? Wstrzymanie wykonania each póki nie otrzymamy true z funkcji?

0

Poczytaj o for await w JSie.

0
Patryk27 napisał(a):

Poczytaj o for await w JSie.

Dzięki wielkie! :D mniej więcej o to chodziło. Tylko dalej mam problem bo:

async function setElement(item) 
{
    const result = await $.ajax({
        url: ajaxurl,
        type: 'POST',
        data: args
    });
    return result;
}
async function prepareArray(array)
{
    $.each(array, function(i, v) {
        await setElement(v);
    });
}

Wyrzuca mi ajax "od razu" dla wszystkich zanim się wykona ;/

1
async function prepareArray(array) {
  for (const element in array) {
    await setElement(element);
  }
}
0

Skąd pochodzą te wpisy? Ktoś ręcznie dodaje kilka tysięcy wpisów? Czy wysyłasz wszystkie a np. zostały zmodyfikowane tylko 2? Nie rób tak, że wysyłasz te żądania po sobie kilka tysięcy raz - nigdy czegoś takiego nie widziałem, a jak bym zobaczył to by mnie to bardzo zmartwiło ;)

0
Markuz napisał(a):

Skąd pochodzą te wpisy? Ktoś ręcznie dodaje kilka tysięcy wpisów?

Nie, jest to tablica pobrana z innego miejsca. Ma ok 250k wpisów. Musze ją przetworzyć (najlepiej zapisać do bazy) a następnie w kolejnej pętli dodać szczegółowe informacje dla każdego (przed chwilą) dodanego elementu.

0

Dzięki za pomoc! Szczególne podziękowania dla Patryk27 za nakierowanie! (tak używam for await :) )
Podzieliłem sobie tę tablice na mniejsze pakiety i ajaxem ładuję to do bazy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1