JavaScript Sıra sıra komut çalıştırma nasıl yapılır?

yessure

Picopat
Katılım
14 Ağustos 2023
Mesajlar
54
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Başlıkta söylediğim gibi, JavaScript ile sıra sıra komut çalıştırmak istiyorum. Örneğin 1, 2, 3, 4, 5, 6, 7, 8, 9 elemanlarım var. Her 1 saniyede 1 kez rakam değişilsin. ve 9 rakamına gelmeden öbürleri çalışmasın.

setInterval ile yapmayı denedim fakat karıştı biraz.

Kod şöyle:

if(message === "!avatar") {
var avatar1 = () => {
room.setPlayerAvatar(player.id,"1")
}
setInterval (avatar1,300);
var avatar2 = () => {
room.setPlayerAvatar(player.id,"2")
}
setInterval (avatar2,400);
var avatar3 = () => {
room.setPlayerAvatar(player.id,"3")
}
setInterval (avatar3,500);
}
 
Son düzenleyen: Moderatör:
Başlıkta söylediğim gibi, JavaScript ile sıra sıra komut çalıştırmak istiyorum. Örneğin 1, 2, 3, 4, 5, 6, 7, 8, 9 elemanlarım var. Her 1 saniyede 1 kez rakam değişilsin. ve 9 rakamına gelmeden öbürleri çalışmasın.

setInterval ile yapmayı denedim fakat karıştı biraz.

Kod şöyle:

if(message === "!avatar") {
var avatar1 = () => {
room.setPlayerAvatar(player.id,"1")
}
setInterval (avatar1,300);
var avatar2 = () => {
room.setPlayerAvatar(player.id,"2")
}
setInterval (avatar2,400);
var avatar3 = () => {
room.setPlayerAvatar(player.id,"3")
}
setInterval (avatar3,500);
}

JavaScript:
if (message === "!avatar") {
    // Avatarları içeren dizimizi tanımlayalım.
     const avatars = ["1", "2", "3", "4", "5", "6", "7", "8", "9"];

    // Bir fonksiyon tanımlayalım ve bu fonksiyon avatarları belirli delaylerle değiştirsin.
    const changeAvatar = (index) => {
        // Eğer index range dışı ise değer return edilsin.
        if (index >= avatars.length) return;

        // Avatar değişiyor.
        room.setPlayerAvatar(player.id, avatars[index]);

        // Fonksiyonu recursive olarak gecikmeli çağıralım.
        setTimeout(() => {
            changeAvatar(index + 1);
        }, 1000); // Her 1 saniyede değişsin.
    };

    // Avatarları index 0 dan başlayarak değiştirelim ve fonksiyonu çağıralım.
    changeAvatar(0);

// Kodumuz sonlansın.
}
 
Son düzenleme:
Maalesef çalışmadı. Söylemek istediğim şu. İlk önce room.setPlayerAvatar(player.id,"1") çalışacak. Ardından 2, ardından 3 olacak ve böyle gidecek 9a kadar. Aralarında da 1 saniye olacak.
 
Maalesef çalışmadı. Söylemek istediğim şu. İlk önce room.setPlayerAvatar(player.id,"1") çalışacak. Ardından 2, ardından 3 olacak ve böyle gidecek 9a kadar. Aralarında da 1 saniye olacak.

JavaScript:
const avatars = ["1", "2", "3", "4", "5", "6", "7", "8", "9"];


const changeAvatar = (index) => {
 
    if (index >= avatars.length) return;
    console.log("Changing avatar to", avatars[index]);
    room.setPlayerAvatar(player.id, avatars[index]);

    setTimeout(() => {
        changeAvatar(index + 1);
    }, 1000);
};


changeAvatar(0);

Söylemek istediğini anladım ancak değişken tanımlama üzerine çalışmanı öneririm.
 

Yeni konular

Geri
Yukarı