for döngüsünü bekleme
Herkese merhaba,
Aşağıdaki kodumda console çıktısında önce 'Son kısım' daha sonra 'i' ile yazdırdığım kısım geliyo. Ben istiyorumki for döngüsü çalışsın bitsin daha sonra alttaki 'Son kısım' çalışsın.
Bunu nasıl yapabilirim ?
const arr = new Array(5)
for (let i = 0; i < arr.length; i++) {
setTimeout(_ => {
console.log(i)
}, 10)
}
console.log('Son kısım')
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (6)
bunu tam olarak ne için istiyorsun? mantıken for döngüsü içinde console'a bastığın için neye göre bekleyecek ki.
örneğin bu değerlerini promise olarak tutup Promise.all()
ile altta kontrol edip işlem yapabilirsin
const arr = new Array(5)
let promises = []
for (let i = 0; i < arr.length; i++) {
promises.push(new Promise((resolve, reject) => {
setTimeout(() => {
console.log(i)
resolve(i)
}, 20)
}))
}
Promise.all(promises).then(values => {
console.log('Son kısım');
// values ile isterse promisden döndürdüğün değerlere burada da bir işlem yapabilirsin
})
bilmiyorum ne kadar mantıklı tabi yapmak istediğin şeyi söylersen daha farklı fikirler üretebiliriz
async function test() {
const arr = new Array(5)
for (let i = 0; i < arr.length; i++) {
await setTimeout(async () => {
await console.log(i)
}, 10)
}
console.log('Son kısım')
}
test();
let result = document.querySelector("#result");
fetch('https://jsonplaceholder.typicode.com/todos', {
method: "get"
})
.then(res => res.text())
.then(async answer_text => {
let answer = await JSON.parse(answer_text);
await answer.forEach(item => {
result.innerHTML += item.id + "<br />";
});
result.innerHTML += "test";
});
Bu kodu boş bir html sayfası aç (sunucuda) dene çalışıyor demo istersen:
https://codepen.io/takimmedya/pen/gOwRgRQ