Первое, что вам следует знать, это то, что Javascript является однопоточным.
Поскольку он однопоточный, он может делать только одну вещь за один раз.
Чтобы предотвратить блокирование браузерана выполнение кода, который делает больше времени, например, запрос http, браузер предоставляет веб-API.
Веб-API имеет асинхронные методы, которые могут предотвратить блокировку.Когда весь синхронный код завершен, функция обратного вызова асинхронного метода может выполняться.
Возвращаясь к вашей ситуации, функция Fetch является асинхронным методом.Вы можете получить данные json только в функции обратного вызова, потому что функция обратного вызова выполняется после вашего синхронного кода, который является вашим последним кодом строки, вставленным в описание вопроса.
Надеюсь, это поможет!