密码:answer
一、异步 && 事件循环
1、 阅读代码
const promise = new Promise((resolve, reject) => {console.log(1);console.log(2);});promise.then(() => {console.log(3);});console.log(4);
2、阅读代码
const promise1 = new Promise((resolve, reject) => {console.log('promise1')resolve('resolve1')})const promise2 = promise1.then(res => {console.log(res)})console.log('1', promise1);console.log('2', promise2);
3、 阅读代码
Promise.resolve().then(() => {console.log('promise1');const timer2 = setTimeout(() => {console.log('timer2')}, 0)});const timer1 = setTimeout(() => {console.log('timer1')Promise.resolve().then(() => {console.log('promise2')})}, 0)console.log('start');
4、 阅读代码
const promise = new Promise((resolve, reject) => {console.log(1);setTimeout(() => {console.log("timerStart");resolve("success");console.log("timerEnd");}, 0);console.log(2);});promise.then((res) => {console.log(res);});console.log(4);
5、 阅读代码
const promise = new Promise((resolve, reject) => {resolve('success1');reject('error');resolve('success2');});promise.then((res) => {console.log('then:', res);}).catch((err) => {console.log('catch:', err);})
6、 阅读代码
Promise.resolve(1).then(2).then(Promise.resolve(3)).then(console.log)
7、 阅读代码
const promise1 = new Promise((resolve, reject) => {setTimeout(() => {resolve('success')}, 1000)})const promise2 = promise1.then(() => {throw new Error('error!!!')})console.log('promise1', promise1)console.log('promise2', promise2)setTimeout(() => {console.log('promise1', promise1)console.log('promise2', promise2)}, 2000)
8、 阅读代码
Promise.resolve(1).then(res => {console.log(res);return 2;}).catch(err => {return 3;}).then(res => {console.log(res);});
9、 阅读代码
Promise.resolve().then(() => {return new Error('error!!!')}).then(res => {console.log("then: ", res)}).catch(err => {console.log("catch: ", err)})
10、 阅读代码
const promise = Promise.resolve().then(() => {return promise;})promise.catch(console.err)
11、 阅读代码
Promise.resolve(1).then(2).then(Promise.resolve(3)).then(console.log)
12、 阅读代码
Promise.reject('err!!!').then((res) => {console.log('success', res)}, (err) => {console.log('error', err)}).catch(err => {console.log('catch', err)})
13、 阅读代码
Promise.resolve('1').then(res => {console.log(res)}).finally(() => {console.log('finally')})Promise.resolve('2').finally(() => {console.log('finally2')return '我是finally2返回的值'}).then(res => {console.log('finally2后面的then函数', res)}) 6
14、 阅读代码
function runAsync (x) {const p = new Promise(r => setTimeout(() => r(x, console.log(x)), 1000))return p}Promise.all([runAsync(1), runAsync(2), runAsync(3)]).then(res => console.log(res))
15、 阅读代码
function runAsync (x) {const p = new Promise(r => setTimeout(() => r(x, console.log(x)), 1000))return p}function runReject (x) {const p = new Promise((res, rej) => setTimeout(() => rej(`Error: ${x}`, console.log(x)), 1000 * x))return p}Promise.all([runAsync(1), runReject(4), runAsync(3), runReject(2)]).then(res => console.log(res)).catch(err => console.log(err))
16、 阅读代码
function runAsync (x) {const p = new Promise(r => setTimeout(() => r(x, console.log(x)), 1000))return p}Promise.race([runAsync(1), runAsync(2), runAsync(3)]).then(res => console.log('result: ', res)).catch(err => console.log(err))
17、 阅读代码
function runAsync(x) {const p = new Promise(r =>setTimeout(() => r(x, console.log(x)), 1000));return p;}function runReject(x) {const p = new Promise((res, rej) =>setTimeout(() => rej(`Error: ${x}`, console.log(x)), 1000 * x));return p;}Promise.race([runReject(0), runAsync(1), runAsync(2), runAsync(3)]).then(res => console.log("result: ", res)).catch(err => console.log(err));
18、 阅读代码
async function async1() {console.log("async1 start");await async2();console.log("async1 end");}async function async2() {console.log("async2");}async1();console.log('start')
19、 阅读代码
async function async1() {console.log("async1 start");await async2();console.log("async1 end");setTimeout(() => {console.log('timer1')}, 0)}async function async2() {setTimeout(() => {console.log('timer2')}, 0)console.log("async2");}async1();setTimeout(() => {console.log('timer3')}, 0)console.log("start")
20、 阅读代码
async function async1 () {console.log('async1 start');await new Promise(resolve => {console.log('promise1')})console.log('async1 success');return 'async1 end'}console.log('srcipt start')async1().then(res => console.log(res))console.log('srcipt end')
21、 阅读代码
async function async1 () {console.log('async1 start');await new Promise(resolve => {console.log('promise1')resolve('promise1 resolve')}).then(res => console.log(res))console.log('async1 success');return 'async1 end'}console.log('srcipt start')async1().then(res => console.log(res))console.log('srcipt end')
22、 阅读代码
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(resolve => {console.log("promise1");resolve();}).then(function() {console.log("promise2");});console.log('script end')
23、 阅读代码
async function async1 () {await async2();console.log('async1');return 'async1 success'}async function async2 () {return new Promise((resolve, reject) => {console.log('async2')reject('error')})}async1().then(res => console.log(res))
24、 阅读代码
const first = () => (new Promise((resolve, reject) => {console.log(3);let p = new Promise((resolve, reject) => {console.log(7);setTimeout(() => {console.log(5);resolve(6);console.log(p)}, 0)resolve(1);});resolve(2);p.then((arg) => {console.log(arg);});}));first().then((arg) => {console.log(arg);});console.log(4);
25、 阅读代码
const async1 = async () => {console.log('async1');setTimeout(() => {console.log('timer1')}, 2000)await new Promise(resolve => {console.log('promise1')})console.log('async1 end')return 'async1 success'}console.log('script start');async1().then(res => console.log(res));console.log('script end');Promise.resolve(1).then(2).then(Promise.resolve(3)).catch(4).then(res => console.log(res))setTimeout(() => {console.log('timer2')}, 1000)
26、 阅读代码
const p1 = new Promise((resolve) => {setTimeout(() => {resolve('resolve3');console.log('timer1')}, 0)resolve('resovle1');resolve('resolve2');}).then(res => {console.log(res) // resolve1setTimeout(() => {console.log(p1)}, 1000)}).finally(res => {console.log('finally', res)})
27、 阅读代码
console.log('1');setTimeout(function() {console.log('2');process.nextTick(function() {console.log('3');})new Promise(function(resolve) {console.log('4');resolve();}).then(function() {console.log('5')})})process.nextTick(function() {console.log('6');})new Promise(function(resolve) {console.log('7');resolve();}).then(function() {console.log('8')})setTimeout(function() {console.log('9');process.nextTick(function() {console.log('10');})new Promise(function(resolve) {console.log('11');resolve();}).then(function() {console.log('12')})})
28、 阅读代码
console.log(1)setTimeout(() => {console.log(2)})new Promise(resolve => {console.log(3)resolve(4)}).then(d => console.log(d))setTimeout(() => {console.log(5)new Promise(resolve => {resolve(6)}).then(d => console.log(d))})setTimeout(() => {console.log(7)})console.log(8)
29、 阅读代码
console.log(1);setTimeout(() => {console.log(2);Promise.resolve().then(() => {console.log(3)});});new Promise((resolve, reject) => {console.log(4)resolve(5)}).then((data) => {console.log(data);})setTimeout(() => {console.log(6);})console.log(7);
30、 阅读代码
Promise.resolve().then(() => {console.log('1');throw 'Error';}).then(() => {console.log('2');}).catch(() => {console.log('3');throw 'Error';}).then(() => {console.log('4');}).catch(() => {console.log('5');}).then(() => {console.log('6');});
31、 阅读代码
setTimeout(function () {console.log(1);}, 100);new Promise(function (resolve) {console.log(2);resolve();console.log(3);}).then(function () {console.log(4);new Promise((resove, reject) => {console.log(5);setTimeout(() => {console.log(6);}, 10);})});console.log(7);console.log(8);
