Advertisement
Guest User

Untitled

a guest
Mar 23rd, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.79 KB | None | 0 0
  1. function deferred<T>() {
  2. let resolve: (value: PromiseLike<T> | T) => void;
  3. let reject: (reason: Error) => void;
  4. let promise = new Promise<T>((_resolve, _reject) => {
  5. resolve = _resolve;
  6. reject = _reject;
  7. });
  8.  
  9. return { promise, resolve, reject };
  10. }
  11. function randomIntFromInterval(min: number, max: number) {
  12. return Math.floor(Math.random() * (max - min + 1) + min);
  13. }
  14. async function myAsyncFunction(val: string) {
  15. const { resolve, promise } = deferred<string>();
  16.  
  17. setTimeout(
  18. () => resolve(`${val} - computed`),
  19. randomIntFromInterval(200, 3000)
  20. );
  21. return promise;
  22. }
  23.  
  24. async function main() {
  25. for (let i = 0; i < 10; i++) {
  26. const input = i + 1 + '';
  27. myAsyncFunction(input)
  28. .then(v => console.log(v))
  29. .catch(e => console.error(`${i} failed`));
  30. }
  31. }
  32.  
  33. main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement