2023-01-01 Promise常见机试题和答案,主要考察:执行顺序,值透传,错误处理,返回值,链式调用

1.Promise 构造函数是同步执行的,then方法是异步执行的
var p = new Promise((resolve, reject) => {
   
    console.log(1)
    resolve(3)
    console.log(2)
})
p.then(res => {
   
    console.log(res)
})
console.log(4)
//输出结果:1 2 4 3

new 一个Promise示例后,立即执行executor函数,它是同步的,
一直遇到resolve函数,把它作为微任务添加到任务队列中,
当执行栈中的所有同步任务都执行完毕时,系统就会读取任务队列中的事件,异步任务(微任务resolve)开始执行

2.Promise 状态一旦改变则不能再变
var p = new Promise((resolve, reject) => {
   
    resolve('success1')
    reject('error')
    resolve('success2')
});
p.then((res) => {
   
    console.log('then: ', res)
});
p.catch((err) => {
   
    console.log('catch: ', err)
});
//  运行结果:then: success1

构造函数中的 resolve 或 reject 只有第一次执行有效,多次调用没有任何作用

3.then和catch方法可以被多次调用
var p = new Promise((resolve, reject) => {
   
    setTimeout(() => {
   
        console.log('once')
        resolve('success')
    }, 1000);
});
const start = Date.now(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端OnTheRun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值