Promise的执行顺序记录:
前言:Javascript执行环境是单线程的,也就是说JS环境中负责解释和执行的线程只有一个;那么Promise函数在JavaScript中执行时的顺序(纸上得来终觉浅)!
D级:
testFunction() { console.log(`console 1`); new Promise((resolve, reject) => { console.log(`console 2`); resolve(console.log(`console 3`)); reject(console.log(`console 4`)) }).then().catch(() => { console.log(`consolve 5`) }); console.log(`console 6`) } //-->运行结果是 console 1;console 2;console 3;console 4;console 6

C级:
testFunction() { console.log(`console 1`); new Promise((resolve, reject) => { console.log(`console 2`); resolve(console.log(`console 3`)); reject(console.log(`console 4`)) }).then(() => { setTimeout(() => { console.log(`console 7`) },0) }).catch(() => { console.log(`consolve 5`) }); console.log(`console 6`) } // -->console 1;console 2;console 3;console 4;console 6;console 7

B级:
testFunction() { console.log(`console 1`); new Promise((resolve, reject) => { console.log(`console 2`); resolve(console.log(`console 3`)); reject(console.log(`console 4`)) }).then(() => { setTimeout(() => { console.log(`console 7`); new Promise(() => { console.log(`console 8`) }).then(console.log(`console 9`)) },0) }).catch(() => { console.log(`consolve 5`) }); console.log(`console 6`) } // -->console 1;console 2;console 3;console 4;console 6;console 7;console 8;console 9

A级:
testFunction() { console.log(`console 1`); setTimeout(() => { new Promise(() => { console.log(`console 10`); }).then(console.log(`console 11`)); },0); new Promise((resolve, reject) => { console.log(`console 2`); resolve(console.log(`console 3`)); reject(console.log(`console 4`)) }).then(() => { setTimeout(() => { console.log(`console 7`); new Promise(() => { console.log(`console 8`) }).then(console.log(`console 9`)) },0) }).catch(() => { console.log(`consolve 5`) }); console.log(`console 6`) }//-->console 1;console 2;console 3;console 4;console 6;console 10;console 11;console 7;console 8;console 9

S级:
testFunction() { console.log(`console 1`); setTimeout(() => { new Promise(() => { console.log(`console 10`); }).then(console.log(`console 11`)); },0); let letP =new Promise(() => { setTimeout(() => { console.log(`console 12`); },0) }); promiseFn(letP); function promiseFn(fn){ console.log(`console 13`) return fn; }; new Promise((resolve, reject) => { console.log(`console 2`); resolve(console.log(`console 3`)); reject(console.log(`console 4`)) }).then(() => { setTimeout(() => { console.log(`console 7`); new Promise(() => { console.log(`console 8`) }).then(console.log(`console 9`)) },0) }).catch(() => { console.log(`consolve 5`) }); console.log(`console 6`) } //-->consolve 1;consolve 13;consolve 2;consolve 3;consolve 4;consolve 6;consolve 10;consolve 11;consolve 12;consolve 7;consolve 8;consolve 9

简单小结:在一个函数中执行顺序-->已申明的函数-->new Promise-->setTimeout;在Promise函数中后执行.then()函数;