【问题标题】:What I'm doing wrong with await我在等待时做错了什么
【发布时间】:2021-11-19 13:56:00
【问题描述】:

我是新人,所以有点不对劲。 :-) 我有这个 js 代码:

    onMount(async () => {
        pozoviRestServis(mojUrl, ucitajSve);
    }); 

    async function ucitajSve(data, mojUrl) {
        apiData.set(data);
    }

在 HTML 中我有要显示的行:

{#await apiData}
    <p>wait</p>
{/await}

但是,什么都没有发生?

【问题讨论】:

    标签: svelte svelte-3


    【解决方案1】:

    我假设apiData 是一个可写存储。正确的语法应该是{#await $apiData}

    编辑: 我没仔细看。你没有使用promise,所以你不应该使用#await。请改用#if

    {#if $apiData}
      <pre>{JSON.stringify($apiData)}</pre>
    {/if}
    

    如果你想使用 Promise,你需要相应地修改你的代码

    let setApiData;
    let apiDataPromise = new Promise((resolve) => setApiData = resolve);
    
    onMount(async () => {
        pozoviRestServis(mojUrl, ucitajSve);
    }); 
    
    async function ucitajSve(data, mojUrl) {
        setApiData(data);
    }
    
    {#await apiDataPromise}
        <span>wait</span>
    {:then data}
        <pre>{JSON.stringify(data)}</pre>
    {/await}
    

    【讨论】:

    • 更新了答案。
    【解决方案2】:

    感谢您的回复。它对我有很大帮助。所以,在脚本中我有:

        let apiDataPromise=ucitajSveJadanput();
    
        function ucitajSveJadanput() {
            **return** pozoviRestServis(mojUrl, ucitajSve);
        }
    
        /* onMount(async () => {
            pozoviRestServis(mojUrl, ucitajSve);
        }); */
    

    在 HTML 中我有它:

    {#await apiDataPromise}
        <p>0</p>
    {:then data} 
        <p>1</p>
    {:catch e}
        <p>Error {e}</p>
    {/await}
    

    :-)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多