JavaScript中Promise函数执行顺序
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`) } //-->console 1;console 13;console 2;console 3;console 4;console 6;console 10;console 11;console 12;console 7;console 8;console 9
简单小结:在一个函数中执行顺序-->已申明的函数-->new Promise-->setTimeout;在Promise函数中后执行.then()函数;
我们不是一群默默无闻的码农,而是推进世界进步的开荒者