Default task
This is the way to create a default task.
There’s no concurrency management in this task and every perform
will be executed immediately.
To specify a default task, you can either use the dot notation or the options notation.
<script lang="ts"> import { task } from '@sheepdog/svelte';
const myTask = task(async () => { // your code });</script>
<script lang="ts"> import { task } from '@sheepdog/svelte';
const myTask = task( async () => { // your code }, { kind: 'default' }, );</script>
The task class
Section titled “The task class”The return value of the task function will be a svelte stateful class where you can access state
from all the instances running and eventually cancel them with cancelAll
.
Passing props
Section titled “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).
<script lang="ts"> import { task } from '@sheepdog/svelte';
const myTask = task(async (id: string) => { // your code });</script>
<button onclick={() => { myTask.perform('42'); }}>perform</button>
<script lang="ts"> import { task } from '@sheepdog/svelte';
const myTask = task( async (id: string) => { // your code }, { kind: 'default' }, );</script>
<button onclick={() => { myTask.perform('42'); }}>perform</button>
Getting the return value
Section titled “Getting the return value”If you return something from your task you can access the return value by awaiting the perform
function.
<script lang="ts"> import { task } from '@sheepdog/svelte';
const myTask = task(async () => { return 42; });</script>
<button onclick={() => { const number = await myTask.perform(); console.log(number); // 42 }}>perform</button>
<script lang="ts"> import { task } from '@sheepdog/svelte';
const myTask = task( async () => { return 42; }, { kind: 'default' }, );</script>
<button onclick={() => { const number = await myTask.perform(); console.log(number); // 42 }}>perform</button>
Getting the TaskInstance
Section titled “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 a svelte stateful class and you can access the current value.
<script lang="ts"> import { task } from '@sheepdog/svelte';
const myTask = task(async () => { // your code });</script>
<button onclick={() => { const lastRun = myTask.perform(); console.log(lastRun); // { isRunning: true, hasStarted: true, ... } lastRun.cancel(); }}>perform</button>
<script lang="ts"> import { task } from '@sheepdog/svelte';
const myTask = task( async () => { // your code }, { kind: 'default' }, );</script>
<button onclick={() => { lastRun = myTask.perform(); console.log(lastRun); // { isRunning: true, hasStarted: true, ... } lastRun.cancel(); }}>perform</button>