Давайте посмотрим на лес сначала, прежде чем смотреть на деревья.
Здесь есть много информативных ответов с большими подробностями, я не буду повторять ни одного из них. Ключ к программированию в JavaScript имеет сначала правильную ментальную модель общего исполнения.
Хорошие новости заключается в том, что, если вы хорошо понимаете этот момент, вам никогда не придется беспокоиться о гоночных условиях. Прежде всего вы должны понимать, как вы хотите упорядочить свой код как по существу ответ на разные дискретные события, и как вы хотите объединить их в логическую последовательность. Вы можете использовать обещания или новые асинхронные / ожидающие более высокие уровни в качестве инструментов для этой цели, или вы можете откатывать свои собственные.
Но вы не должны использовать какие-либо тактические инструменты для решения проблемы, пока вам не понравится актуальная проблемная область. Нарисуйте карту этих зависимостей, чтобы знать, что нужно запускать, когда. Попытка ad-hoc подхода ко всем этим обратным вызовам просто не поможет вам.
Когда вы определяете литеральное целое число с префиксом 0, компилятор будет рассматривать его как целочисленную базу 8. (Octal).
Проверьте этот пост http: // rodrigosasaki. com / 2013/06/10 / number-literals-in-java /
Итак, значение 77 в восьмеричной базе фактически равно 63 в десятичной базе.
077 = 7 * 8 ^ 0 + 7 * 8 ^ 1 = 63; 0123 = 3 * 8 ^ 0 + 2 * 8 ^ 1 + 1 * 8 ^ 2 = 3 + 16 + 64 = 83; Первое значение 0 означает восьмеричное значение.
0x77 - это hex val.
077
является восьмеричным номером , который равен 7 x 81 + 7 x 80, который 63
десятичен. Чтобы отобразить восьмеричное значение, которое вы могли бы сделать
System.out.printf("%o", 077);