Skip to content

Instantly share code, notes, and snippets.

@ZempTime
Last active November 10, 2019 16:50
Show Gist options
  • Save ZempTime/7545b2ff8fc696351a43712ead258877 to your computer and use it in GitHub Desktop.
Save ZempTime/7545b2ff8fc696351a43712ead258877 to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
const buildTask = (taskName, resolver) => {
return {
[taskName]: {
initial: "resolving",
states: {
resolving: {
invoke: {
id: taskName,
src: ctx => resolver(ctx),
onError: "errored",
onDone: [
{
target: "completed",
cond: (_ctx, e) => e.data
},
{ target: "pending" }
]
}
},
errored: {},
pending: {},
completed: {}
}
}
};
};
const resolveTask1 = ctx => {
return new Promise((resolve, reject) => {
return resolve(true);
});
};
const resolveTask2 = ctx => {
return new Promise((resolve, reject) => {
return resolve(false);
});
};
const resolveTask3 = ctx => {
return new Promise((resolve, reject) => {
return reject("error");
});
};
const task1 = buildTask("task1", resolveTask1);
const task2 = buildTask("task2", resolveTask2);
const task3 = buildTask("task3", resolveTask3);
console.log(task1);
const onboardingMachine = Machine({
id: "onboarding",
type: "parallel",
states: {
tasks: {
type: "parallel",
states: {
...task1,
...task2,
...task3
}
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment