Skip to content

Instantly share code, notes, and snippets.

@elierotenberg
Created February 22, 2019 19:24
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 elierotenberg/589c3b9384c6229a5433dbed5f94216b to your computer and use it in GitHub Desktop.
Save elierotenberg/589c3b9384c6229a5433dbed5f94216b to your computer and use it in GitHub Desktop.
Evaluation order vs. concurrency
(async () => {
// small function that resolves after t ms
const sleep = t => new Promise(resolve => setTimeout(resolve, t));
let state = {
counter: 0,
running: true
};
const setCounter = v => {
const prevCounter = state.counter;
state.counter = v;
console.log(prevCounter, "=>", v);
};
const getOne = async () => {
await sleep(1000);
return 1;
};
const addOneAsync = async () => {
// Uncomment one:
// setCounter(state.counter + (await getOne()));
// setCounter((await getOne()) + state.counter);
};
addOneAsync();
await sleep(500);
setCounter(state.counter + 1);
await sleep(500);
setCounter(state.counter + 1);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment