Turn based input from clients using Socket.io

Hi guys I have a small problem here. I am using Socket.io for a turn based card game. I have an array of player objects, I can access each player's socket and use to send or receive events. I need to go through every player(socket), send them an event to tell them it is their turn, wait for them to take the turn (let's say press a button on the screen) and then on to the next player and so on. I made a couple of attempts but I know that socket.io is asynchronous and basically the loop continues to execute without actually waiting for any players to take turns. Any idea on how I could manage it? To make it more clear of what I am trying to achieve I will demonstrate my last attempts. Thank you!

for(i = 0; i < players.length; i++) {
    players[i].getSocket().emit('yourTurn');
    players[i].getSocket().on('turnTaken', function(data) {
        //do something with the data
    }
    //the loop then goes to the next player
}

What you should do is restructure your logic and UI so that you only notify the player it's their turn when it's their turn, rather than continuously. It'll be their turn once someone else takes their turn (or some other event... game start for instance).