Drop task
This is the way to create a droppable task.
This will cancel any new instances of the task. You can also provide a max that will only drop the
task instances if the threshold is exceeded.
Usage
To specify a task as droppable, you can either use the dot notation or the options notation.
import { task } from '@sheepdog/vanilla';
const dropTask = task.drop(async () => { // your code});import { task } from '@sheepdog/vanilla';
const dropTask = task( async () => { // your code }, { kind: 'drop' },);Max concurrency
This is how you can specify the maximum number of concurrent instances. The default is 1, here we’re setting it to 5.
import { task } from '@sheepdog/vanilla';
const dropTask = task.drop( async () => { // your code }, { max: 5 },);import { task } from '@sheepdog/vanilla';
const dropTask = task( async () => { // your code }, { kind: 'drop', max: 5 },);The task
The return value of the task function will be an object with getters where you can access state from
all the instances running and eventually cancel them with cancelAll.
Passing props
While defining a task, if the function that you pass in has some arguments, those will be required
by the perform function (and it will be strongly typed too).
import { task } from '@sheepdog/vanilla';
const dropTask = task.drop(async (id: string) => { // your code});
button.addEventListener('click', () => { dropTask.perform('42');});import { task } from '@sheepdog/vanilla';
const dropTask = task( async (id: string) => { // your code }, { kind: 'drop' },);
button.addEventListener('click', () => { dropTask.perform('42');});Getting the return value
If you return something from your task you can access the return value by awaiting the perform
function.
import { task } from '@sheepdog/vanilla';
const dropTask = task.drop(async () => { return 42;});
button.addEventListener('click', () => { const number = await dropTask.perform(); console.log(number); // 42});import { task } from '@sheepdog/vanilla';
const dropTask = task( async () => { return 42; }, { kind: 'drop' },);
button.addEventListener('click', () => { const number = await dropTask.perform(); console.log(number); // 42});Getting the TaskInstance
If you don’t await the perform function, then you’ll get back the
task instance that you can use either to cancel it or to get its
current state. The TaskInstance is also an object with getters you can access the current value
with instance.value or register events on it with instance.on.
import { task } from '@sheepdog/vanilla';
const dropTask = task.drop(async () => { // your code});
button.addEventListener('click', () => { const lastRun = dropTask.perform(); lastRun.on('success', () => { console.log(lastRun.value); }); lastRun.cancel();});import { task } from '@sheepdog/vanilla';
const dropTask = task( async () => { // your code }, { kind: 'drop' },);
button.addEventListener('click', () => { lastRun = dropTask.perform(); lastRun.on('success', () => { console.log(lastRun.value); }); lastRun.cancel();});