为什么 createResource 错误在设置之前在重新获取时未定义
Why is createResource error gets undefined on a refetch before it is set
我想显示 error
属性 createResource
。
在这个例子中,为什么error
在被抛出之前设置为undefined。
它在获取 line error
之前记录 undefined
错误
import { render } from "solid-js/web";
import { For, createSignal, createResource, createEffect } from "solid-js";
const p_tau = async () => {
throw 'line error'
}
function Counter() {
let [s, setS] = createSignal()
let _r = createResource(s, _ => p_tau())
setInterval(() => {
setS(s() + 'h')
}, 1000)
createEffect(() => {
console.log(_r[0].error)
})
return (<>
</>)
}
render(() => <Counter />, document.getElementById("app"));
因为 createResource
returns 资源和资源的初始值始终是 undefined
并保持 undefined
直到从 fetcher 函数返回的承诺与值:
import { createEffect, createResource, createSignal } from "solid-js";
import { render } from "solid-js/web";
const fetcher = async () => {
throw 'line error'
}
function Counter() {
let [s, setS] = createSignal(1);
let [data] = createResource(s, fetcher)
setInterval(() => {
setS(s => s + 1);
}, 1000)
createEffect(() => {
console.log(data(), data.error);
})
return (<>
</>)
}
render(() => <Counter />, document.getElementById("app"));
即使传一个non-nullsourceSignal
也是一样
promise 在事件循环的下一个滴答中解析为一个值,这就是为什么即使您立即抛出错误,它也不会立即解决错误。 Solid 的运行时同步执行。因此 data.error
仅在下一个订单号后收到错误。
我想显示 error
属性 createResource
。
在这个例子中,为什么error
在被抛出之前设置为undefined。
它在获取 line error
undefined
错误
import { render } from "solid-js/web";
import { For, createSignal, createResource, createEffect } from "solid-js";
const p_tau = async () => {
throw 'line error'
}
function Counter() {
let [s, setS] = createSignal()
let _r = createResource(s, _ => p_tau())
setInterval(() => {
setS(s() + 'h')
}, 1000)
createEffect(() => {
console.log(_r[0].error)
})
return (<>
</>)
}
render(() => <Counter />, document.getElementById("app"));
因为 createResource
returns 资源和资源的初始值始终是 undefined
并保持 undefined
直到从 fetcher 函数返回的承诺与值:
import { createEffect, createResource, createSignal } from "solid-js";
import { render } from "solid-js/web";
const fetcher = async () => {
throw 'line error'
}
function Counter() {
let [s, setS] = createSignal(1);
let [data] = createResource(s, fetcher)
setInterval(() => {
setS(s => s + 1);
}, 1000)
createEffect(() => {
console.log(data(), data.error);
})
return (<>
</>)
}
render(() => <Counter />, document.getElementById("app"));
即使传一个non-nullsourceSignal
也是一样
promise 在事件循环的下一个滴答中解析为一个值,这就是为什么即使您立即抛出错误,它也不会立即解决错误。 Solid 的运行时同步执行。因此 data.error
仅在下一个订单号后收到错误。