На днях в моем приложении Angular 6 произошел инцидент с кодом, который выглядел следующим образом:
console.log('before:', value);
this.changeValue(value);
console.log('after:', value);
changeValue () каким-то образом изменяет значение.Я ожидал увидеть неизмененное значение в консоли перед вызовом changeValue (), а затем измененное значение после.Вместо этого я видел измененное значение до и после.
Я предполагаю, что это доказало, что моя функция changeValue () работала, но это также указало мне, что console.log () является асинхронным, то есть неt распечатать значение на консоль сразу же;он ждет немного ... и когда он, наконец, напечатает значение, это значение будет таким, как есть в тот момент.Другими словами, первый вызов функции console.log (), приведенный выше, ждал до тех пор, пока после вызова changeValue () перед печатью не произошло, и когда это произошло, значение уже изменилось.
Так что я правильно понял, чтоconsole.log () является асинхронным.Если так, то почему?Это вызывает много путаницы при отладке.