JavaScript Arrow Function'dan Veri Alma Ve GET Request

Kod:

const axios = require('axios');

axios.get('https://jsonplaceholder.typicode.com/todos/1')
    .then(res => {
        console.log(res.data);
    });

Çıktı:

{ userId: 1, id: 1, title: 'delectus aut autem', completed: false }

Yukarıda belirttiğim şekilde Request gönderiyorum. Ve sorunsuz şekilde cevabı alıyorum. Lakin aldığım cevabı fonksiyonun dışına değişken olarak çıkaramıyorum. JavaScript'te biraz yeniyim. Yardımcı olursanız sevinirim.

Düzenlemelerinden yanıtına baktım. Söylediğin gibi denedim fakat yine olmadı.

Kod:

const axios = require('axios');

let resp = null;

axios.get('https://jsonplaceholder.typicode.com/todos/1')
    .then(res => {
        resp = res.data;
    });

console.log(resp);

Çıktı:

null

Bu monadik¹ bir yapi, degeri fonksiyonun disina cikartmaktansa disarida kullanan kodu fonksiyonun icine tasiman gerekiyor.

Kodunu paylasmadigin icin somut bir “sunu yap” diyemiyorum. Verebilecegim console.log ornegini yazmissin zaten.

JS versiyonun destekliyorsa await kullanarak bu yapiyi imperatif (duz) koda benzetebilirsin. Bu arada veriyi cikartmaya calistigin sey arrow function degil, bir Promise.


1: Monad; arastirmana gerek yok. Dusunme sekillerinden bir tanesi kapali ve acamadigin bir kutu. Acabilsen yapacagin seyleri de kutunun icine koyuyorsun.

3 Beğeni

Öncelikle teşekkürler;

Kodda kalabalık gözükmemesi için GET Request gönderen bir fonksiyon tanımlamak istedim. Örneğin;

const axios = require('axios');

function getRequest(url) {
    return axios.get(url);
}

console.log(getRequest('https://jsonplaceholder.typicode.com/todos/1'));

Fakat bu fonksiyon şu değeri döndürüyor;

Promise { <pending> }

Ne yapmam gerekiyor?

Ne yapmak istiyorsun?

İşleri kolaylaştırmak için kendi fonksiyonumu tanımlamak istiyorum.

Bu kendin tanimladigin ve GET request’i gonderen bir fonksiyon.

const axios = require('axios');

(async ()=> {

let resp = null;

resp = await axios.get('https://jsonplaceholder.typicode.com/todos/1')
console.log(resp);

})()

[/quote]

böyle yaparsan olur, axios asenkron çalıştığı için fonksiyonun bitmedisini beklemez o yüzden null görüyorsun. Ya then içindeki kısımda yapacaksın ya da await kullanacaksın