前端面试题-Promise

之前写过vue相关的面试题(如果有需要可以查看历史博客),今天更新前端面试题promise相关的.希望大家可以多多支持!!!

// 面试题1
 setTimeout(()=>{
      console.log(1)
    },0)
    Promise.resolve().then(()=>{
      console.log(2)
    })
    Promise.resolve().then(()=>{
      console.log(4)
    })
    console.log(3)

	// 答案:3 2 4 1
// 面试题2
 setTimeout(() => {
        console.log(1)
      }, 0)
      new Promise((resolve) => {
        console.log(2)
        resolve()
      }).then(() => {
        console.log(3)
      }).then(() => { // 不放在队列中
        console.log(4) 
      })
      console.log(5)

	// 答案:2 5 3 4 1
// 面试题3
  const first = () => (new Promise((resolve, reject) => {
        console.log(3)
        let p = new Promise((resolve, reject) => {
          console.log(7)
          setTimeout(() => {
            console.log(5)
            resolve(6)
          }, 0)
          resolve(1)
        })
        resolve(2)
        p.then((arg) => {
          console.log(arg)
        })
    
      }))
    
      first().then((arg) => {
        console.log(arg)
      })
      console.log(4)
	// 答案:3 7 4 1 2 5 
// 面试题4
 setTimeout(() => {
        console.log("0")
      }, 0)
      new Promise((resolve,reject)=>{
        console.log("1")
        resolve()
      }).then(()=>{        
        console.log("2")
        new Promise((resolve,reject)=>{
          console.log("3")
          resolve()
        }).then(()=>{      
          console.log("4")
        }).then(()=>{       
          console.log("5")
        })
      }).then(()=>{  
        console.log("6")
      })
    
      new Promise((resolve,reject)=>{
        console.log("7")
        resolve()
      }).then(()=>{         
        console.log("8")
      })
	
	// 答案:1 7 2 3 8 4 6 5 0
// 面试题5
  async function async1() {
      console.log('async1 start')
      await async2()  // async2().then(() => {})
      console.log('async1 end')
    }

    async function async2() {
      console.log('async2')
    }

    console.log('script start')

    setTimeout(() => {
      console.log('setTimeout')
    }, 0)

    async1()
    
    new Promise(function (resolve) {
      console.log('promise1')
      resolve()
    }).then(function () {
      console.log('promise2')
    })
    console.log('script end')
	
	// 答案依次:script start ==> async1 start ==> async2 ==> pro,ise1 ==> 
	// script end ==> async1 end ==> setTimeOut    

你们做对了吗??如对答案有疑问,欢迎大家评论讨论,博主也会给大家解疑.

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Promise是JavaScript中的一种异步编程解决方案。它有三种状态:pending(初始状态)、fulfilled(实现状态)和rejected(失败状态)。在面试中,可能会问到与Promise相关的问题,例如如何创建一个Promise对象、如何处理Promise的异常等。下面是一个关于Promise的示例代码: ```javascript // 创建一个Promise对象 const promise = new Promise((resolve, reject) => { // 异步操作,例如发送网络请求或读取文件 // 如果操作成功,调用resolve函数传递结果 // 如果操作失败,调用reject函数传递错误信息 // resolve('success'); reject(new Error('error!!!')); }); // 处理Promise对象的结果 promise .then(result => { console.log(result); }) .catch(error => { console.error(error); }); ``` 在上面的代码中,我们创建了一个Promise对象,并在构造函数中执行了一个异步操作。如果操作成功,我们调用resolve函数传递操作的结果;如果操作失败,我们调用reject函数传递错误信息。然后,我们使用.then方法处理Promise对象的结果,如果操作成功,我们打印结果;如果操作失败,我们使用.catch方法捕获错误并打印错误信息。 希望以上回答对您有所帮助。如果您有任何其他问题,请随时提问。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [前端面试 | 必知必会的10道Promise题](https://blog.csdn.net/IT_studied/article/details/124758936)[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* *3* [前端面试题Promise](https://blog.csdn.net/weixin_49014702/article/details/122938017)[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 ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值