UNPKG

@shopify/cli

Version:

A CLI tool to build for the Shopify platform

65 lines 2.54 kB
import { renderConcurrent, renderSingleTask, renderTasks } from '@shopify/cli-kit/node/ui'; import { outputContent, outputToken, TokenizedString } from '@shopify/cli-kit/node/output'; export async function asyncTasks() { // renderConcurrent let backendPromiseResolve; const backendPromise = new Promise(function (resolve, _reject) { backendPromiseResolve = resolve; }); const backendProcess = { prefix: 'backend', action: async (stdout, _stderr, _signal) => { stdout.write('first backend message'); await new Promise((resolve) => setTimeout(resolve, 1000)); stdout.write('second backend message'); await new Promise((resolve) => setTimeout(resolve, 1000)); stdout.write('third backend message'); await new Promise((resolve) => setTimeout(resolve, 1000)); backendPromiseResolve(); }, }; const frontendProcess = { prefix: 'frontend', action: async (stdout, _stderr, _signal) => { await backendPromise; stdout.write('first frontend message'); await new Promise((resolve) => setTimeout(resolve, 1000)); stdout.write('second frontend message'); await new Promise((resolve) => setTimeout(resolve, 1000)); stdout.write('third frontend message'); }, }; await renderConcurrent({ processes: [backendProcess, frontendProcess], }); // renderTasks const tasks = [ { title: 'Installing dependencies', task: async () => { await new Promise((resolve) => setTimeout(resolve, 2000)); }, }, { title: 'Downloading assets', task: async () => { await new Promise((resolve) => setTimeout(resolve, 2000)); }, }, ]; await renderTasks(tasks); // renderSingleTask await renderSingleTask({ title: new TokenizedString('Importing data'), task: async (updateStatus) => { for (let i = 1; i <= 10; i++) { // eslint-disable-next-line no-await-in-loop await new Promise((resolve) => setTimeout(resolve, 500)); const status = outputContent `Importing data ${outputToken.italic(outputContent `(${outputToken.green(i.toString())} complete)`)}`; updateStatus(status); } return 'completed'; }, }); } //# sourceMappingURL=async.js.map