async await异步发送请求例子

这里进行一个简单的模拟。使用setTimeout来模拟发送请求。
我们在获取一个后端返回信息时,可以像下面getUserInfo函数一样来写。
即第一次会向后端发送请求,并保存在userInfo变量里。之后再获取时即可直接从userInfo里获取。async函数返回的是promise函数resolve时的值。但是async函数无法处理reject时的值,所以一般需要try catch来获取reject返回值。

let userInfo
    async function fetchUserInfo() {
    
    
      if (userInfo) {
    
    
        return await userInfo
      } else {
    
    
        return await new Promise((resolve, reject) => {
    
    
          setTimeout(() => {
    
    
            userInfo = {
    
     name: 'nihao' }
            reject(userInfo)
          }, 2000)
        })
      }
    }

    async function getUserInfo() {
    
    
      try {
    
    
        const info = await fetchUserInfo()
        return info
      } catch (error) {
    
    
        console.log('error', error)
      }
    }
    const info = getUserInfo()

猜你喜欢

转载自blog.csdn.net/qq_42535651/article/details/106613526