Skip to content

Instantly share code, notes, and snippets.

@hmboyd
Created December 29, 2021 05:18
Show Gist options
  • Save hmboyd/fbf47bdf640df261a320b030455e3396 to your computer and use it in GitHub Desktop.
Save hmboyd/fbf47bdf640df261a320b030455e3396 to your computer and use it in GitHub Desktop.
// create
// starts as pending
const arrived = true;
const ride = new Promise((resolve, reject) => {
// executor (callback function)
if (arrived) {
resolve('arrived');
} else {
reject('failed');
}
});
// consume
ride
.then(value => {
console.log(value);
})
.catch(error => {
console.log(error);
})
.finally(() => {
console.log('always runs');
})
const codeBlocker = () => {
// ! blocking
// let i = 0
// while (i < 1000000000) { i++; }
// ! async blocking
// return new Promise((resolve, reject) => {
// let i = 0;
// while (i < 1000000000) { i++; }
// resolve('loops done');
// })
// non-blocking - must be inside resolve.then callback
return Promise.resolve().then(v => {
let i = 0;
while (i < 1000000000) { i++; }
return 'loops done';
})
}
codeBlocker().then(console.log);
// promise.all
const promise1 = Promise.resolve('Hello world');
const promise2 = 10;
const promise3 = new Promise((resolve, reject) =>
setTimeout(resolve, 2000, 'Goodbye')
);
const promise4 = fetch('https://jsonplaceholder.typicode.com/users').then(res => res.json());
Promise.all([promise1, promise2, promise3, promise4]).then(console.log);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment