Function: withProgress()
withProgress<
R
>(options
,task
):Promise
<R
>
Show progress in Podman Desktop. Progress is shown while running the given callback
and while the promise it returned isn't resolved nor rejected. The location at which
progress should show (and other details) is defined via the passed ProgressOptions
.
Type Parameters
• R
Parameters
options
the options for the task's details
task
(progress
, token
) => Promise
<R
>
A callback returning a promise. Progress state can be reported with the provided Progress-object.
To report discrete progress, use increment
to indicate how much work has been completed. Each call with
a increment
value will be summed up and reflected as overall progress until 100% is reached (a value of
e.g. 10
accounts for 10%
of work done).
Note that currently only ProgressLocation.Notification
is capable of showing discrete progress.
To monitor if the operation has been cancelled by the user, use the provided CancellationToken
.
Note that currently only ProgressLocation.Notification
is supporting to show a cancel button to cancel the
long-running operation.
Returns
Promise
<R
>
The promise the task-callback returned.
Examples
Here is a simple example
await window.withProgress({ location: ProgressLocation.TASK_WIDGET, title: `Running task` },
async progress => {
progress.report({message: 'task1' });
await task1();
progress.report({increment: 50, message: 'task2' });
await task2();
},
);
The error is propagated if thrown inside the task callback.
try {
await window.withProgress(
{ location: ProgressLocation.TASK_WIDGET, title: `Running task` },
async progress => {
throw new Error('error when running a task');
},
);
} catch (error) {
// do something with the error
}
You can return a value from the task callback
const result: number = await window.withProgress<number>(
{ location: ProgressLocation.TASK_WIDGET, title: `Running task` },
async progress => {
// compute something
return 55;
},
);