1-1 promise和定时器执行顺序

  1. promise 会优先于 定时器
  1. console.log("3");
  2. setTimeout(()=>{
  3. console.log("2");
  4. })
  5. Promise.resolve().then(()=>{
  6. console.log("1");
  7. })
  8. /*
  9. 3
  10. 1
  11. 2
  12. */

1-2 await

  1. await 阻塞线程 会从异步函数中跳出来,优先执行同步的代码
  1. async function show(){
  2. console.log(1);
  3. var res = await 100;
  4. console.log(res);
  5. }
  6. show()
  7. console.log(2); // 1 2 100
  8. setTimeout(()=>{
  9. console.log(3);
  10. },1000)
  11. /*
  12. 1
  13. 2
  14. 100
  15. 3
  16. */
  1. async function show(){
  2. console.log("script-start");
  3. var res = await go()
  4. console.log(res);
  5. }
  6. async function go(){
  7. return 1
  8. }
  9. show()
  10. setTimeout(()=>{
  11. console.log(4);
  12. },1000)
  13. var p = new Promise((resolve,reject)=>{
  14. console.log(2);
  15. resolve(3)
  16. })
  17. p.then((res)=>{
  18. console.log(res);
  19. })
  20. console.log("script-start");
  21. /*
  22. script-start
  23. 2
  24. script-start
  25. 1
  26. 3
  27. 4
  28. */