инстанса:
<script>
let name = await fetch('https://goodnamesapi.io/');
</script>
<h1>Hello, {name}</h1>
Вот пока name не получится - что будет? Белый экран висеть? Тут ведь даже обработку промиса не сделать.
Кажется, это в принципе не особо валидная история в сфц. Тут надо плясать от того, что новый синтаксис должен хоть что-то упрощать или, желательно, даже давать совершенно новые возможности, а не просто быть фичей в вакууме. То есть, нужны жизненные кейсы, словом. Блокирующий инициализацию компонента фетч данных — это хрень, а не кейс.
тут name раньше чем await, т.е. name будет, но пустой. а вот переменные после await, будут кидать Uncaught ReferenceError а рендеринг будут сразу без ожиданий await-ов
т.е. разрабочик должен сам учесть какие переменные будут не доступны при старте и использовать {#if и т.п.
Почему, сейчас же рендеринг происходит после прохождения всего <script> - иначе будут ненужные мелькания в темплейте
сейчас он также может учесть и засунуть эти паременные в (async()=>{})()
если напрямую "компилировать", то как-то так: let render; async init = function() { render = innerRender; let name = await fetch('https://goodnamesapi.io/'); function innerRender() { el.innerText = name; } } init(); render();
т.е. конструктор выполнил все что смог, а пото рендер прибиндился
Обсуждают сегодня