Skip to content

Instantly share code, notes, and snippets.

@shurane
Last active January 26, 2023 18:46
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 shurane/6421e35fc295fdd1da7429013d94280f to your computer and use it in GitHub Desktop.
Save shurane/6421e35fc295fdd1da7429013d94280f to your computer and use it in GitHub Desktop.
"use strict";
// https://stackoverflow.com/questions/45285129/any-difference-between-await-promise-all-and-multiple-await
// also https://jsfiddle.net/znup6vLj/
//console.clear();
function delay(ms: number) {
return new Promise(resolve => {
setTimeout(resolve, ms);
});
}
interface Empty {}
interface Person { name: string, age: number }
// IIFE https://developer.mozilla.org/en-US/docs/Glossary/IIFE
(async () => {
const time1 = new Date().getTime();
const arr: Promise<number>[] = [
delay(60).then(() => 5),
delay(60).then(() => 10),
delay(100).then(() => 15),
Promise.resolve(20),
]
const funcs: (Promise<number>|number|void)[] = [
async () => {
console.log(60);
return await Promise.resolve(60);
},
() => { console.log(65); return 65; },
() => { console.log(70); return Promise.resolve(70); },
// https://stackoverflow.com/questions/38708550/difference-between-return-await-promise-and-return-promise
// would not be caught if there was an error here
// use https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled to contain errors
//() => { console.log(75); return Promise.reject(75); },
() => { console.log(80); Promise.resolve(80); },
// https://stackoverflow.com/a/24250926/198348
() => { return Promise.resolve(<Empty>{}); },
() => { return Promise.resolve(<Person>{name: "E", age: 1}); },
].map(f => f());
const data = await Promise.all([...arr, ...funcs]);
const time2 = new Date().getTime();
console.log("done", time2 - time1);
console.log(data);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment