Svelte's tutorial on await blocks and promises中,它们显示了在等待/解决/拒绝承诺时如何显示特定文本。

但是当没有加载内容时如何显示元素?即当诺言被解决或被拒绝时(当然,{:then}和{:catch}中的按钮都没有重复)

我想要做的是以下内容:

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


但不重复<MyElement />

最佳答案

根据Promises API(and this question,没有现成的方法来了解诺言是否已解决)

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

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


最后,做

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

07-28 11:38