顺序执行.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. function handle(promise){
  2. return promise.then(data=>[null,data]).catch(err=>[err,null])
  3. }
  4. function fn1(){
  5. return new Promise((resolve,reject)=>{
  6. setTimeout(()=>{
  7. console.log('fn1');
  8. resolve('ffn1');
  9. },1000)
  10. })
  11. }
  12. function fn2(){
  13. return new Promise((resolve,reject)=>{
  14. setTimeout(()=>{
  15. console.log('fn2');
  16. resolve('ffn2');
  17. },1000)
  18. })
  19. }
  20. function rejectFn(){
  21. return new Promise((resolve,reject)=>{
  22. setTimeout(()=>{
  23. console.log('rejectFn');
  24. reject('rejectFn');
  25. },1000)
  26. })
  27. }
  28. async function test1(){
  29. let time1 = new Date().getTime();
  30. let f1 = fn1();
  31. let f2 = fn2();
  32. let res1 = await f1;
  33. let res2 = await f2;
  34. console.log(res1,res2);
  35. let time2 = new Date().getTime();
  36. console.log(time2-time1);
  37. }
  38. // test1(); // 1012ms
  39. async function test2(){
  40. let time1 = new Date().getTime();
  41. let res1 = await fn1();
  42. let res2 = await fn2();
  43. console.log(res1,res2);
  44. let time2 = new Date().getTime();
  45. console.log(time2-time1);
  46. }
  47. // test2(); // 2021ms
  48. async function test3(){
  49. let time1 = new Date().getTime();
  50. let f1 = fn1();
  51. let f2 = fn2();
  52. let r3 = rejectFn();
  53. let [err,res] = await handle(f1);
  54. let [err2,res2] = await handle(f2);
  55. let [err3,res3] = await handle(r3);
  56. console.log(err,res);
  57. console.log(err2,res2);
  58. console.log(err3,res3);
  59. let time2 = new Date().getTime();
  60. console.log(time2-time1);
  61. }
  62. test3(); // 1023ms