We welcome your contributions to this project.
It could be:
- a bug report in a GitHub issue
- a feature request in a GitHub issue
- a fix to documentation
- a code contribution to address an existing bug or feature request
interface QueuedTask<T> { | |
task: () => T; | |
promise: { | |
resolve: (res: any) => void; | |
reject: (err: any) => void; | |
}; | |
} | |
interface RateLimitedTask<T> { | |
task: () => T; |
We welcome your contributions to this project.
It could be:
.env
fileasync function executeAsyncTasks(tasks: AsyncTask<any>[]) { | |
const success = async res => ({ success: await res }) // Promise<{success: res}> | |
const error = async err => ({ error: await err }) // Promise<{error: e}> | |
const runWithResult = task => task.run() | |
.then(result => { | |
success(result) | |
task._success(result) | |
}) | |
.catch(e => { |
class AsyncTask<T> { | |
_run: () => Promise<T>; | |
_success: (result: T) => void; | |
_error: (e: Error) => void; | |
constructor({ | |
error, | |
run, | |
success | |
}: { |
// Takes an array of async tasks that may throw of shape {run: () => Promise<result>} | |
// Returns Promise<{error: error[], success: result[]}> | |
async function executeAsyncTasks(arrayOfAsyncTasks) { | |
const success = async res => ({ success: await res }) // Promise<{success: res}> | |
const error = async err => ({ error: await err }) // Promise<{error: e}> | |
const runWithResult = task => task.run().then(success).catch(error) | |
const outcomes = await Promise.all(arrayOfAsyncTasks.map(runWithResult)) |
const { error, success } = outcomes.reduce((acc, o) => o.error ? | |
{ error: [...acc.error, o.error], success: acc.success } : | |
{ error: acc.error, success: [...acc.success, o.success] }, | |
{ error: [], success: [] }) |
async function myAsyncFunction(argument) { | |
const success = async res => ({ success: await res }) // Promise<{success: res}> | |
const error = async err => ({ error: await err }) // Promise<{error: e}> | |
const arrayTasks = [ | |
{ | |
run: async () => getDataAsync() | |
} | |
}, |
async function myAsyncFunction(argument) { | |
let arrayTasks = [ | |
{ | |
const run = async () => { | |
let response = await getDataAsync(); | |
} | |
}, | |
{ | |
const run = async () => { |
const makeProject = i => ({ | |
Project_ID: i.id, | |
Project_Name: i.name, | |
Project_Start_Date: i.starts_at, | |
Project_End_Date: i.ends_at, | |
Project_Status: i.project_state | |
}) | |
const projects = content.map(makeProject) |