# TaskInstance
New task instance is created via performing a task.
const task = useTask(function*(signal, a, b) {
/* ... */
});
const taskInstance = task.perform(1, 2);
# value
T | null
The value of an instance is what the perform function returns.
const taskInstance = task.perform();
await taskInstance;
console.log(taskInstance.value);
# error
any | null
Instance saves in error
whatever was thrown during the perform call. Read more about handling errors.
const task = useTask(function*() {
throw new Error("You shall not pass");
});
const instance = task.perform();
console.log(instance.error);
# hasStarted
boolean
Instance is started immediately after a task is performed unless it was enqueued or dropped or immediately canceled.
# isRunning
boolean
Instance is running unless it's finished, dropped or enqueued.
# isFinished
boolean
Instance is finished if it has resolved a value or threw an error
# isError
boolean
if (instance.isError) {
console.log(instance.error);
}
# isSuccessful
boolean
Instance is successful if it is finished and there's no error
# isCanceled
boolean
Instance is canceled if it was cancelled implicitly (via cancel on unmount) or explicitly via cancel()
or cancelAll().
# isDropped
boolean
Instance may be dropped if the task has drop() or keepLatest() concurrency policy.
# isEnqueued
boolean
Instance may be enqueued if the task has enqueue() or keepLatest() concurrency policy.
# then()
(onfulfilled: onFulfilled<T>, onrejected?: onRejected) => Promise<any>
Allows to use the task in a PromiseLike way. Returns a promise which allows chaining just like with regular promises. This also allows the instance to be awaited.
const instance = task.perform();
instance.then((resultValue) => {
// ...
});
// or just await
const value = await instance;
Read more about composing tasks.
# catch()
(onrejected?: onRejected) => any
Allows to catch errors that were thrown during the perform call.
const instance = task.perform();
instance.catch((error) => {
console.error(error);
});
// or just await with try catch
try {
const value = await instance;
} catch (error) {
console.error(error);
}
# finally()
() => any
finally
is called either way not matter if instance resolved or rejected.
# status
"running" | "enqueued" | "canceled" | "canceling" | "dropped" | "error" | "success"
status
might be useful for debugging purposes.
<template>
<div>{{ myTask.status }}</div>
</template>
# canceledOn()
(signal: AbortSignalWithPromise) => TaskInstance<T>
This is used for some cases when cancelation does not cascade. See details here.
# id
number
id
might be useful sometimes for debugging purposes as it's simply the index of the task instance within the task.