Skip to content

Instantly share code, notes, and snippets.

@rudolph9
Created April 26, 2018 00:41
Show Gist options
  • Save rudolph9/e8f816045cf113d4b8a675d3c565dea1 to your computer and use it in GitHub Desktop.
Save rudolph9/e8f816045cf113d4b8a675d3c565dea1 to your computer and use it in GitHub Desktop.
showing awit is not synchronous
class Foo {
constructor(foo) {
this.foo = foo
}
async execUntilStop(callback) {
const timeoutLoopCallback = () => {
if (this.stopExec) return;
callback({ data: 'data' });
setTimeout(timeoutLoopCallback, 10);
};
setTimeout(timeoutLoopCallback, 10);
return { data: 'data'};
}
stop() {
this.stopExec = true;
}
}
const myFunc = async function (num) {
let callbackCalled = false;
const callback = () => callbackCalled = true;
foo = new Foo('foo');
foo.execUntilStop(callback);
const hasCallbackCalled = async () => callbackCalled;
while(!(await hasCallbackCalled())){
console.log('in loop ', num);
null;
}
foo.stop()
return 'success!';
};
myFunc(1).then((result) => console.log(result))
myFunc(2).then((result) => console.log(result))
/* console output:
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
in loop 2
in loop 1
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment