Javascript визначається як мова- реєрант, що означає, що користувачам не піддаються потоки потоків, в реалізації можуть бути потоки. Такі функції, як setTimeout()
асинхронні зворотні дзвінки, повинні зачекати, поки движок сценарію вимкне, перш ніж вони зможуть запуститися.
Це означає, що все, що відбувається у події, має бути закінчено до того, як буде оброблено наступну подію.
З цього приводу, вам може знадобитися mutex, якщо ваш код робить щось там, де він очікує, що значення не зміниться між тим, коли асинхронна подія була запущена, і коли викликався зворотний виклик.
Наприклад, якщо у вас є структура даних, де ви натискаєте одну кнопку, і вона надсилає XmlHttpRequest, який викликає зворотний виклик, змінює структуру даних руйнівно, і у вас є інша кнопка, яка змінює ту саму структуру даних безпосередньо між тим, коли подія була Після запуску зворотного дзвінка користувач міг натиснути та оновити структуру даних до зворотного дзвінка, який може втратити значення.
У той час як ви можете створити такий стан перегонів, як уникнути цього у вашому коді дуже просто, оскільки кожна функція буде атомною. Було б багато роботи і прийняти кілька дивних моделей кодування, щоб створити стан гонки насправді.