Skip to content

16 - until #3002

@Erel-Kamui

Description

@Erel-Kamui
<script setup lang='ts'>
import { A } from "@vitest/mocker/dist/registry.d-D765pazg.js";
import { ref } from "vue"

const count = ref(0)

/**
 * Implement the until function
*/

function until(initial) {
  function toBe(value) {
    return new Promise((resolve) => {
      const check = () => {
        if (initial.value === value) {
          resolve(value)
          return true
        } else {
          return false
        }
      }

      // 轮询方式实现
      if( check() ) return
      const interval = setInterval(() => {
        if(check()) {
          clearInterval(interval)
        }
      },100)
    })
  }

  return {
    toBe,
  }
}

async function increase() {
  count.value = 0
  const Interval = setInterval(() => {
    count.value++
  }, 1000)
  await until(count).toBe(3)
  clearInterval(Interval)
  console.log(count.value === 3) // Make sure the output is 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