Skip to content

Instantly share code, notes, and snippets.

@zaydek
Last active December 18, 2020 00:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zaydek/7cb39c903196e9a020a26ed017ac7669 to your computer and use it in GitHub Desktop.
Save zaydek/7cb39c903196e9a020a26ed017ac7669 to your computer and use it in GitHub Desktop.
function check(fn: Function) {
try {
const ret = fn()
return [ret, null]
} catch (err) {
return [null, err]
}
}
async function checkAsync<T>(promise: Promise<T>) {
try {
const ret = await promise
return [ret, null]
} catch (err) {
return [null, err]
}
}
;(async () => {
const [ret, err] = await checkAsync(
Promise.all([
new Promise((resolve, reject) => {
setTimeout(() => {
if (Math.random() < 0.5) {
resolve("ok")
} else {
reject("not ok")
}
}, 1e3)
}),
new Promise((resolve, reject) => {
setTimeout(() => {
if (Math.random() < 0.5) {
resolve("ok")
} else {
reject("not ok")
}
}, 2e3)
}),
new Promise((resolve, reject) => {
setTimeout(() => {
if (Math.random() < 0.5) {
resolve("ok")
} else {
reject("not ok")
}
}, 3e3)
}),
]),
)
console.log({ ret, err })
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment