避免在我的 fetch Svelte 组件中阻塞
Avoid if block in my fetch Svelte component
我正在从我的 Svelte 项目中的外部源获取 JSON
。
当我在 await
块周围使用 if
块时,它起作用了。但是当我删除 if
块时,它给出了 object is undefined
.
的错误
如何避免使用 if
块并使其正常工作?我不明白为什么 if
块会使错误消失。
这是一个非常简单的脚本。你可以通过clicking here.
查看REPL
您没有将 program
初始化为任何东西,因此等待它会引发错误。将其设置为 fetchPrograms
的初始结果将允许您删除 if 块。 {#await}
tutorial 就是这样做的。
<!-- Fetch.svelte -->
<script>
export let url;
let program = fetchPrograms();
async function fetchPrograms(url) {
const response = await fetch(url)
program = await response.json()
}
$: fetchPrograms(url)
</script>
<button on:click={() => url='https://reqres.in/api/users?page=4'} style="color:red">
Fetch
</button>
{#await program}
xx
{:then item}
<p style="color:red">
{item.page}
</p>
{:catch error}
omg
{/await}
我正在从我的 Svelte 项目中的外部源获取 JSON
。
当我在 await
块周围使用 if
块时,它起作用了。但是当我删除 if
块时,它给出了 object is undefined
.
如何避免使用 if
块并使其正常工作?我不明白为什么 if
块会使错误消失。
这是一个非常简单的脚本。你可以通过clicking here.
查看REPL您没有将 program
初始化为任何东西,因此等待它会引发错误。将其设置为 fetchPrograms
的初始结果将允许您删除 if 块。 {#await}
tutorial 就是这样做的。
<!-- Fetch.svelte -->
<script>
export let url;
let program = fetchPrograms();
async function fetchPrograms(url) {
const response = await fetch(url)
program = await response.json()
}
$: fetchPrograms(url)
</script>
<button on:click={() => url='https://reqres.in/api/users?page=4'} style="color:red">
Fetch
</button>
{#await program}
xx
{:then item}
<p style="color:red">
{item.page}
</p>
{:catch error}
omg
{/await}