Skip to content

16 - until #2292

Open
Open
@mu-muw

Description

@mu-muw
// 你的答案
<script setup lang='ts'>
import { ref } from "vue"

// 定义一个计数器 ref
const count = ref(0)

// 定义一个 until 函数
/**
* 实现`until`函数
*/

function until(initial) {
 // 定义一个 toBe 函数
 function toBe(value) {
   // 返回一个 Promise 对象,并在 resolve 中设置 initial 的值为 value
   return new Promise(resolve => {
     initial.value = value
     resolve(initial.value)
   })
 } 
 // 返回一个包含 toBe 函数的对象,方便在模板中使用
 return {
   toBe,
 }
}

// 定义一个 increase 函数
async function increase() {
 // 将 count 的值重置为 0
 count.value = 0
 // 设置一个定时器,每隔 1000 毫秒增加 count 的值
 setInterval(() => {
   count.value++
 }, 1000)
 // 使用 until 函数,等待 count 的值等于 3
 await until(count).toBe(3)
 // 打印 count 的值是否等于 3
 console.log(count.value === 3) // 确保输出为 true
}

</script>

<template>
 <p @click="increase">
   Increase
 </p>
</template>

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions