Skip to content

Instantly share code, notes, and snippets.

@marr
Last active June 12, 2019 14:14
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 marr/f2901b2d40b12958fd221e1954160f29 to your computer and use it in GitHub Desktop.
Save marr/f2901b2d40b12958fd221e1954160f29 to your computer and use it in GitHub Desktop.
gainResult(fn) {
return Promise.race([
new Promise(resolve => {
try {
const ret = fn((err, result) => {
if (err) {
resolve({
type: "async",
error: err.message
});
} else {
resolve({
type: "async",
value: result
});
}
});
if (ret instanceof Promise) {
resolve(
ret.then(
res => ({
type: "promise",
value: res
}),
err => ({
type: "promise",
error: err.message
})
)
);
} else if (ret !== undefined) {
resolve({
type: "return",
value: ret
});
}
} catch (e) {
resolve({
error: e.message
});
}
}),
new Promise(resolve => {
setTimeout(
() =>
resolve({
type: "no result"
}),
1000
);
})
]);
}
@marr
Copy link
Author

marr commented Jun 12, 2019

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment