return await Promise ile return Promise farki

programming, typescript, javascript, promise, await, return

return promise ve return await promise arasฤฑndaki fark, hata yakalama ve fonksiyonun dรถnรผลŸ deฤŸerinin zamanlamasฤฑ ile ilgilidir.

return promise ifadesi, promise'in รงรถzรผlmesini beklemez ve hemen promise'i dรถndรผrรผr. Bu durumda, promise'in รงรถzรผlmesi veya reddedilmesi, fonksiyonun dฤฑลŸฤฑnda yรถnetilir.

async function foo() {
  return new Promise((resolve, reject) => {
    setTimeout(() => resolve('resolved'), 1000);
  });
}

return await promise ifadesi, promise'in รงรถzรผlmesini bekler ve promise'in รงรถzรผm deฤŸerini dรถndรผrรผr. Bu durumda, promise'in รงรถzรผlmesi veya reddedilmesi, fonksiyonun iรงinde yรถnetilir ve hata yakalama (try/catch) bloklarฤฑ kullanฤฑlabilir.

async function foo() {
  return await new Promise((resolve, reject) => {
    setTimeout(() => resolve('resolved'), 1000);
  });
}

Ancak, genellikle return await promise kullanฤฑmฤฑ gereksizdir ve ESLint gibi bazฤฑ linterlar tarafฤฑndan uyarฤฑ olarak iลŸaretlenir. ร‡รผnkรผ async fonksiyonlar zaten bir Promise dรถndรผrรผr ve await ifadesi genellikle try/catch bloklarฤฑ iรงinde hata yakalamak iรงin kullanฤฑlฤฑr.


Bir fonksiyon iรงerisinde return await promise ile return promise kullanฤฑmฤฑ arasฤฑnda pratikte รถnemli bir fark bulunmaktadฤฑr. Bu fark, รถzellikle hata yรถnetimi ve fonksiyonun async olup olmadฤฑฤŸฤฑna baฤŸlฤฑdฤฑr. Detaylฤฑca aรงฤฑklamak gerekirse:

  1. return promise kullanฤฑmฤฑ: Bu kullanฤฑmda, promise doฤŸrudan รงaฤŸrฤฑlan yere geri dรถndรผrรผlรผr. Fonksiyon iรงindeki promise'in รงรถzรผmlenmesi veya reddedilmesi, fonksiyonu รงaฤŸฤฑran รผst seviyedeki kod tarafฤฑndan ele alฤฑnฤฑr. Bu durumda, promise, fonksiyonun dฤฑลŸฤฑna taลŸฤฑnmฤฑลŸ olur ve fonksiyonun dรถnรผลŸ deฤŸeri olarak promise nesnesi dรถner.

    function fetchData() {
      const promise = fetch('<https://api.example.com/data>');
      return promise; // Promise dรถner, resolve ya da reject olmasฤฑ dฤฑลŸarฤฑda ele alฤฑnฤฑr
    }
    
  2. return await promise kullanฤฑmฤฑ: Burada await, promise'in รงรถzรผlmesini bekler ve sonucu dรถner. EฤŸer promise reddedilirse, hata o noktada ele alฤฑnฤฑr ve fonksiyonun iรงindeki bir try/catch bloฤŸu ile yakalanabilir. Bu kullanฤฑm, รถzellikle async fonksiyonlar iรงinde hata yรถnetimi yaparken tercih edilir. Bu kullanฤฑm, bir anlamda fonksiyonun iรงindeki hata iลŸleme mekanizmasฤฑnฤฑ daha kolay kontrol etmeye olanak tanฤฑr.

    async function fetchData() {
      try {
        const response = await fetch('<https://api.example.com/data>');
        return response; // ร‡รถzรผmlenmiลŸ deฤŸer dรถner
      } catch (error) {
        console.error('Error fetching data:', error);
        throw error; // Hata dฤฑลŸarฤฑya fฤฑrlatฤฑlabilir veya รถzel bir ลŸekilde iลŸlenebilir
      }
    }
    

Performans Aรงฤฑsฤฑndan Farklar:

  • return await kullanฤฑmฤฑ genellikle gereksiz olabilir ve bazฤฑ durumlarda hafifรงe daha yavaลŸ olabilir รงรผnkรผ JavaScript motoru ekstra bir bekleyiลŸ (wait) durumunu iลŸlemek zorundadฤฑr. Ancak, bu bekleyiลŸ hata yakalama ve fonksiyon iรงindeki iลŸ akฤฑลŸฤฑnฤฑ yรถnetme aรงฤฑsฤฑndan รถnemlidir.

  • return promise daha hฤฑzlฤฑ ve daha doฤŸrudan bir yaklaลŸฤฑm saฤŸlar รงรผnkรผ ekstra bir adฤฑm olmaksฤฑzฤฑn promise'i doฤŸrudan dรถndรผrรผr.

Sonuรง olarak:

  • EฤŸer fonksiyonunuz iรงinde hata iลŸleme yapmanฤฑz gerekiyorsa veya fonksiyon รงฤฑktฤฑsฤฑnฤฑn baลŸka bir deฤŸerle deฤŸiลŸtirilmesi gerekiyorsa, return await kullanmanฤฑz daha uygun olabilir.

  • Ancak, sadece bir promise'i dรถndรผrรผp, hata iลŸlemeyi ya da sonuรง iลŸlemeyi fonksiyonu รงaฤŸฤฑran kod parรงasฤฑna bฤฑrakmak istiyorsanฤฑz, return promise kullanฤฑmฤฑ daha temiz ve etkili olacaktฤฑr.

Last updated

Was this helpful?