周五送你10道Promise打印题

143 阅读1分钟

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、代码输出结果


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);

4、代码输出结果


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');

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)

tips:

1、代码从上往下,顺序执行,先同步,后异步

2、setTimeout 是一个宏任务

3、Promise.resolve().then 是一个微任务

image.png

传送门:大厂面试一脸懵:代码输出题之我不会系列

最后祝大家玩得开心,周末愉快!!!