Arka arkaya callback fonksiyonlardan kurtulmak için promise yapısını kullanabiliriz.
Öncelikle
Öncelikle
const fs = require("fs");
const superagent = require("superagent");
Projemize dosya ve superagent modüllerini dahil edelim.
const readFilePro = file =>{
return new Promise((resolve,reject)=>{
fs.readFile(file,(err,data)=>{
if(err) reject('I could not find the file');
resolve(data);
});
});
};
Burada reject yani hata değerine dosya bulunamadı gibi bir ifade gönderiyoruz.
Resolve yani işlem sonucu başarılı ise datayı parametre olarak gönderiyoruz.Bu dosya okuma
işlemi içindi bir de dosya yazma için olarak fonksiyon haline getirelim.
const writeFilePro = (file,data) =>{
return new Promise((resolve,reject)=>{
fs.writeFile(file,data,err =>{
if(err) reject("Couldnt write file");
resolve("success");
});
});
};
readFilePro(`${__dirname}/dog.txt`)
.then(data => {
console.log(`Breed: ${data}`);
return superagent.get(`https://dog.ceo/api/breed/${data}/images/random`);
})
.then(res=>{
console.log(res.body.message);
return writeFilePro('dog-img.txt',res.body.message);
})
.then(()=>{
console.log('Random dog image saved to file');
})
.catch(err =>{
console.log(err);
});
dog.txt dosyası içeriği = > labrador
Buradaki yapıyı kurmamızın amacı readFilePro fonksiyonunun bize bir promise döndür
mesi.Data yı superagent modülü ile get olarak gönderiyoruz.Bize dönen değer bir url
adresi.(Resimler random image olarak değişmekte.) Öncelikle gelen url yi kayıt edip
sonrasında bir consol mesajı yazıyoruz ve son olarak catch metodu.Burada dikkat edil
mesi gereken en önemli noktalardan biri ise bir çok hata mesajı yerine ise tek catch
metodu ile tüm hataları yakalayabiliyoruz.
Yorumlar
Yorum Gönder