react(十五)-- promise(面试)

  1. 以下代码,打印结果为:
setTimeout(() => {
    console.log(1);
}, 0)

Promise.resolve().then(()=>{
    console.log(2);
})

Promise.resolve().then(()=>{
    console.log(3);
})

console.log(4);

分析:

  • 01 先同步后异步
    setTimeout 与 Promise里面的回调函数都是异步的
    console.log(4);是同步的
  • 02 异步又分为 宏任务微任务
    执行异步的时候,先执行宏任务,后执行微任务
    宏任务队列:【1】
    微任务队列:【2,3】
    所以结果为:4,2,3,1
    在这里插入图片描述
  1. 以下代码,打印结果为:
setTimeout(() => {
    console.log(1);
}, 0)
new Promise((resolve) => {
    console.log(2);
    resolve();
})
    .then(()=>{
        console.log(3);
    })
    .then(()=>{
        console.log(4);
    })

console.log(5);

分析:

  • 01 以下代码是一个函数,放在Promise中的函数,会立即执行,是同步函数
    (resolve) => {
            console.log(2);
            resolve();
    }
  • 02 按照先同步后异步,异步中 先微任务再宏任务的顺序,结果为:
    2,5,3,4,1
    在这里插入图片描述
  1. 以下代码,打印结果为:
const fn = () => 
    new Promise((resolve, reject) => {
        console.log(1);

        let p = new Promise((resolve,reject) => {
            console.log(2);
            setTimeout(() => {
                console.log(3);
                resolve(4);
            },0);

            resolve(5);
        });
        resolve(6);
        p.then((arg) =>{
            console.log(arg);
        });
    });

    fn().then((arg) => {
        console.log(arg);
    });
    console.log(7);

分析:

  • 执行完同步 1,2,7之后,执行resolve(5),把5传给resolve(6)下面的
    p.then((arg) =>{
             console.log(arg);
    });
    将 5 放到微任务队列中
    如上,执行resolve(6),将6传给fn().then(()=>{})里面的参数,
    将 5 放到微任务队列中
  • 最后执行宏任务setTimeout
    结果为:1,2,7,5,6,3
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
题目是什么以及为什么在面试中需要掌握Promise? 在面试中,关于Promise面试题目可以涉及Promise的基本概念、使用方法和原理等方面的内容。例如,可以要求解析一段Promise的代码,或者要求描述Promise的执行顺序和特性等。通过这些面试题目,面试官可以了解面试者对Promise的理解程度和应用能力,进而评估其在异步编程方面的能力和经验。 面试中需要掌握Promise的原因主要有以下几点: 1. 异步编程是现代前端开发中非常重要的一部分,Promise是一种用于处理异步操作的机制,能够更好地处理回调地狱问题和提高代码的可读性。 2. Promise是JavaScript中的关键特性之一,在使用现代前端框架如React和Angular时,几乎无法避免使用Promise。因此,掌握Promise能够更好地理解和应用这些框架。 3. Promise面试中常见的考点之一,掌握Promise能够更好地准备面试,展现自己的技术能力和经验。 综上所述,掌握Promise对于面试来说是非常重要的,它能够展示你对异步编程的理解和应用能力,并且能够提升你在面试中的竞争力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [【异步系列三】10道 Promise 面试题彻底理解 Promise 异步执行顺序](https://blog.csdn.net/qq_41131745/article/details/127004662)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [10 个 JavaScript Promise面试题](https://blog.csdn.net/snsHL9db69ccu1aIKl9r/article/details/125454133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值