Skip to content

Instantly share code, notes, and snippets.

@dlueth
Created February 28, 2018 08:54
Show Gist options
  • Save dlueth/d487ef499e27eea30a231eef9ec5156f to your computer and use it in GitHub Desktop.
Save dlueth/d487ef499e27eea30a231eef9ec5156f to your computer and use it in GitHub Desktop.
JavaScript: Async constructor
class MyFirstClass {
constructor() {
return new Promise(async (resolve, reject) => {
try {
resolve(this);
} catch(error) {
reject(error);
}
});
}
}
/*
* Extending: if parent constructor cannot fail/reject/throw
*/
class MySecondClass extends MyFirstClass {
constructor() {
super();
return new Promise(async (resolve, reject) => {
try {
resolve(this);
} catch(error) {
reject(error);
}
});
}
}
/*
* Extending: if parent constructor can fail/reject/throw
*/
class MySecondClass extends MyFirstClass {
constructor() {
try {
super();
return new Promise(async (resolve, reject) => {
try {
resolve(this);
} catch(error) {
reject(error);
}
});
} catch(error) {
return Promise.reject(error);
}
}
}
async () => {
await new MyFirstClass();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment