Skip to content

useAsyncState

反应式异步状态。不会阻止你的设置函数,并且一旦 promise 准备就绪就会触发更改。默认状态为 shallowRef

¥Reactive async state. Will not block your setup function and will trigger changes once the promise is ready. The state is a shallowRef by default.

示例

Ready: false
Loading: true
{}

用法

¥Usage

ts
import { 
useAsyncState
} from '@vueuse/core'
import
axios
from 'axios'
const {
state
,
isReady
,
isLoading
} =
useAsyncState
(
axios
.
get
('https://jsonplaceholder.typicode.com/todos/1')
.
then
(
t
=>
t
.
data
),
{
id
: null },
)

手动触发异步函数

¥Manually trigger the async function

你也可以手动触发它。当你想要控制异步函数的执行时间时,此功能非常有用。

¥You can also trigger it manually. This is useful when you want to control when the async function is executed.

vue
<script setup lang="ts">
import { 
useAsyncState
} from '@vueuse/core'
const {
state
,
execute
,
executeImmediate
} =
useAsyncState
(
action
, '', {
immediate
: false })
async function
action
(
event
) {
await new
Promise
(
resolve
=>
setTimeout
(
resolve
, 500))
return `${
event
.target.textContent} clicked!`
} </script> <template> <
p
>State: {{
state
}}</
p
>
<
button
class
="button" @
click
="
executeImmediate
">
Execute now </
button
>
<
button
class
="ml-2 button" @
click
="
event
=>
execute
(500,
event
)">
Execute with delay </
button
>
</template>