Svelte: Как отображать что-то только тогда, когда обещание не отложено?

В руководстве Svelte по блокам ожидания и обещаниям Svelte показано, как отображать определенный текст, когда обещание ожидает / решено / отклонено.

Но как показать элемент, когда что-то не загружается? Т.е. когда обещание было выполнено или отклонено (конечно, без дублирования кнопки в {: then} и {: catch})

Я хочу сделать следующее:

{#await promise}
{:then number}
    <MyElement />
{:catch error}
    <MyElement />
{/await}

Но без дублирования <MyElement />.


person Mathias-S    schedule 13.11.2019    source источник


Ответы (1)


Согласно API обещаний (и этот вопрос, существует нет готового способа узнать, разрешено ли обещание)

Вы можете создать флаг, который обновляется, когда обещание разрешено, например

// in <script>
let resolved;
promise.then(x => resolved = true).catch(x => resolved = true);

и, в конце концов, сделай

{#if resolved}
 <MyElement />
{/if}
person Dhananjai Pai    schedule 13.11.2019