Skip to content

until

promise 一次性观察变化

¥Promised one-time watch for changes

示例

Add to 7 to show the alert.

Count: 0

用法

¥Usage

等待一些异步数据准备好

¥Wait for some async data to be ready

ts
import { 
until
,
useAsyncState
} from '@vueuse/core'
const {
state
,
isReady
} =
useAsyncState
(
fetch
('https://jsonplaceholder.typicode.com/todos/1').
then
(
t
=>
t
.
json
()),
{}, ) ;(async () => { await
until
(
isReady
).
toBe
(true)
console
.
log
(
state
) // state is now ready!
})()

等待自定义条件

¥Wait for custom conditions

你可以使用 invoke 来调用异步函数。

¥You can use invoke to call the async function.

ts
import { 
invoke
,
until
,
useCounter
} from '@vueuse/core'
const {
count
} =
useCounter
()
invoke
(async () => {
await
until
(
count
).
toMatch
(
v
=>
v
> 7)
alert
('Counter is now larger than 7!')
})

暂停

¥Timeout

ts
// will be resolve until ref.value === true or 1000ms passed
await 
until
(
ref
).
toBe
(true, {
timeout
: 1000 })
// will throw if timeout try { await
until
(
ref
).
toBe
(true, {
timeout
: 1000,
throwOnTimeout
: true })
// ref.value === true } catch (
e
) {
// timeout }

更多示例

¥More Examples

ts
await 
until
(
ref
).
toBe
(true)
await
until
(
ref
).
toMatch
(
v
=>
v
> 10 &&
v
< 100)
await
until
(
ref
).
changed
()
await
until
(
ref
).
changedTimes
(10)
await
until
(
ref
).
toBeTruthy
()
await
until
(
ref
).
toBeNull
()
await
until
(
ref
).
not
.
toBeNull
()
await
until
(
ref
).
not
.
toBeTruthy
()