1
console.log('script start');setTimeout(function () {console.log('setTimeout');}, 0);new Promise(resolve => {console.log('Promise');resolve();}).then(function () {setTimeout(function () {console.log('setTimeout in promise1');}, 0);console.log('promise1');}).then(function () {console.log('promise2');});console.log('script end');// script start// Promise// script end// promise1// promise2// setTimeout// setTimeout in promise1
2
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');// script start// async1 start// async2// promise1// script end// async1 end// promise2// setTimeout
特别注意**async2**执行的顺序, await的函数内部 其实是同步执行的,相当于在promise里面。
async function async1() {console.log('async1 start');await async2();console.log('async1 end');}/ ==async function async1() {console.log('async1 start');Promise.resolve(async2()).then(() => {console.log('async1 end');})}
3
async function async1() {console.log("async1 start");await async2();setTimeout(function () {console.log("setTimeout1");}, 0);}async function async2() {setTimeout(function () {console.log("setTimeout2");}, 0);}console.log("script start");setTimeout(function () {console.log("setTimeout3");}, 0);async1();new Promise(function (resolve) {console.log("promise1");resolve();}).then(function () {console.log("promise2");});console.log("script end");// script start// async1 start// promise1// script end// promise2// setTimeout3// setTimeout2// setTimeout1
4
async function a1() {console.log("a1 start");await a2();console.log("a1 end");}async function a2() {console.log("a2");}console.log("script start");setTimeout(() => {console.log("setTimeout");}, 0);Promise.resolve().then(() => {console.log("promise1");});a1();let promise2 = new Promise((resolve) => {resolve("promise2.then");console.log("promise2");});promise2.then((res) => {console.log(res);Promise.resolve().then(() => {console.log("promise3");});});console.log("script end");// script start// a1 start// a2// promise2// script end// promise1// a1 end// promise2.then// promise3// setTimeout
5
console.log("start");setTimeout(() => {console.log("children2");Promise.resolve().then(() => {console.log("children3");});}, 0);new Promise((resolve, reject) => {console.log("children4");setTimeout(() => {console.log("children5");resolve("children6");}, 0);}).then((res) => {console.log("children7");setTimeout(() => {console.log(res);}, 0);});//start//children4//childern2//childern3//childern5//childern7//children6
6
const p = () => {return new Promise((resolve, reject) => {const p1 = new Promise((resolve, reject) => {setTimeout(() => {resolve(1);}, 0);// resolve(2);});p1.then((res) => {console.log(res);});console.log(3);resolve(4);});};p().then((res) => {console.log(res);});console.log("end");// 3// end// 4// 1
