前端面试题-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    

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

你可能感兴趣的:(web前端)