首页 > 解决方案 > Svelte:如何仅在承诺未挂起时显示某些内容?

问题描述

Svelte 关于等待块和承诺的教程中,它们展示了如何在承诺等待/解决/拒绝时显示特定文本。

但是当某些东西没有加载时,你怎么能显示一个元素呢?即当承诺被解决或被拒绝时(当然,没有在 {:then} 和 {:catch} 中复制按钮)

我要做的是以下内容:

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

但无需复制<MyElement />

标签: javascriptsveltesvelte-3

解决方案


根据 Promises API(和这个问题,没有现成的方法可以知道承诺是否已解决)

您可以创建一个标志,在承诺解决时更新,例如

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

最后,做

{#if resolved}
 <MyElement />
{/if}

推荐阅读