async function async1() {
            console.log("async1 start");
            await  async2();
            console.log("async1 end");
          }
          async  function async2() {
            console.log( ‘async2‘);
          }
          console.log("script start");
          setTimeout(function () {
            console.log("settimeout");
          },0);
          async1();
          new Promise(function (resolve) {
            console.log("promise1");
            resolve();
          }).then(function () {
            console.log("promise2");
          });
          console.log(‘script end‘);
这道题目还是很经典的,参考这篇文章。
https://www.cnblogs.com/cristina-guan/p/11487403.html
promise、async、await、settimeout异步原理与执行顺序
原文:https://www.cnblogs.com/tanweiwei/p/13969453.html