@Fragman

Как пофиксить одновременное выполнение кода?

Есть вот такой код, который выполняется сразу после подключения игрока. Столкнулся с проблемой, что если игроки подключаются одновременно, функция startGame не срабатывает. Статусы обоих игроков не успевают обновится. Что делать?
if(p1.id == userid)
	p1.status = 'connected';
else
	p2.status = 'connected';
if(status == 'created' && p1.status == 'connected' && p2.status == 'connected')
	startGame();
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 2
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
Сложно сказать из кода, который вы предоставили. Скорее всего, проблема в том, что вы не учли асинхронность.

Отличное видео по теме: https://youtu.be/8cV4ZvHXQL4
А это статья, как пользоваться асинхронностью на практике: https://medium.com/devschacht/ire-aderinokun-async...
Ну и на YouTube есть канал CodeDojo - очень рекомендую для понимания основ JavaScript.
Ответ написан
@BorisKorobkov
Web developer
Подписаться (например, с помощью Promise) на изменение status, p1.status, p2.status.
При любом вышеуказанном событии выполнять проверки и запускать startGame.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы