promise面试题(输出结果题)

文章详细解释了JavaScript中的Promise、async/await以及并发控制(Promise.all和Promise.race)的概念和用法,通过示例展示了如何处理异步操作和错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

let a;
const b = new Promise((resolve, reject) => {
    console.log('promise1');
    resolve();
}).then(() => {
    console.log('promise2');
}).then(() => {
    console.log('promise3');
}).then(() => {
    console.log('promise4');
});

a = new Promise(async(resolve, reject) => {
    console.log(a)
    await b;
    console.log(a);
    console.log('after1');
    await a;
    resolve();
    console.log('after2');
});
console.log('end');
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)
setTimeout(()=> console.log(5), 0);
new Promise(resolve => {
    console.log(1);
    resolve(3);
    Promise.resolve().then(()=> console.log(4))
}).then(num => {
    console.log(num)
});
console.log(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);
Promise.resolve()
  .then(() => {
    returnnewError('error!!!');
  })
  .then((res) => {
    console.log('then: ', res);
  })
  .catch((err) => {
    console.log('catch: ', err);
  });
// 打印结果是什么?想被捕捉需要怎么改
    1.throw new Error('error!!!');
    2.return Promise.reject(new Error('error!!!'))
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')
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))
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)
// all的问题
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))
  

// race的问题
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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值