Jak slíbit hovor Ajax

Řekněme, že máte volání AJAX a nějakou další funkci, která závisí na načtení volání AJAX před jeho spuštěním.

Zde je funkce AJAX.

function doTheThing() {
  $.ajax({
    url: window.location.href,
    type: 'POST',
    data: {
      key: 'value',
    },
    success: function (data) {
      console.log(data)
    },
    error: function (error) {
      console.log(error)
    },
  })
}

A můžete zavolat dvě funkce za sebou a zjistit, že druhá funkce nefunguje, protože závisí na první.

doTheThing()
doSomethingElse()

Můžeme to rychle a snadno přepsat pomocí Promise

function doTheThing() {
  return new Promise((resolve, reject) => {
    $.ajax({
      url: window.location.href,
      type: 'POST',
      data: {
        key: 'value',
      },
      success: function (data) {
        resolve(data)
      },
      error: function (error) {
        reject(error)
      },
    })
  })
}

Nyní můžeme provést volání AJAX, spustit funkci úspěchu a navázat na ni další kód.

doTheThing()
  .then((data) => {
    console.log(data)
    doSomethingElse()
  })
  .catch((error) => {
    console.log(error)
  })

A je to!


No