Skip to content

huanjinliu/vivid-wait

Repository files navigation

vivid-wait

Simulate a lively waiting operation.

You can use "vivid-wait" if you want to control a fast-executing function to complete at a specific time. It makes the operation more realistic by controlling the easing of the progress.

Installation

npm install vivid-wait -S

Usage

If only to perform a wait operation

import { wait } from 'vivid-wait';

wait(5000).then(() => {
  // execute after five seconds
})

If want to control the completion time of the operation

import { wait } from 'vivid-wait';

wait(5000, {
  handler: () => new Promise((reslove) => {
    setTimeout(() => {
      reslove('vivid-wait');
    }, 100);
  })
}).then((result) => {
  // result will be obtained after a delay of five seconds
})

If want to add easing animation to the waiting process

<body>
  <h5>progress bars</h5>
  <div class="container">
    <strong class="progress" data-mode="linear"></strong>
    <strong class="progress" data-mode="ease"></strong>
    <strong class="progress" data-mode="ease-in"></strong>
    <strong class="progress" data-mode="ease-out"></strong>
    <strong class="progress" data-mode="ease-in-out"></strong>
    <strong class="progress" data-mode="random"></strong>
  </div>
</body>
import { wait } from 'vivid-wait';

function drawProgressBars () {
  const progressBars = document.querySelectorAll('.progress');

  progressBars.forEach(async bar => {
    wait(5000, {
      // the default easing mode is random
      mode: bar.getAttribute('data-mode'),
      // when the handler execution time exceeds the waiting time, the progress will be maintained at 99% until completed
      onUpdate: (percent, cancel) => {
      	bar.style.width = `${percent * 100}%`
        // you can cancel waiting when update, but need to pay attention to whether it is available when waiting finish
        // if (cancel) cancel();
      }
    }).then((result) => {
      // execute after five seconds
    });
  })
}

window.onload = drawProgressBars;

example

If you don't use module in the browser

window.vividWait.wait(5000).then(() => {
  // execute after five seconds
})

LICENSE

MIT

About

Simulate a lively wait operation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published