promise的async/await,让你的代码像同步一样执行

发布时间:2024年01月16日

await 会暂停函数的执行,直到 promise 状态改变,让你的代码得到的结果,像同步一样执行

  const getApi = async () => {
    console.log('步骤1')
     await new Promise((resolve, reject) => {
      console.log('步骤2')
      setTimeout(() => reject("报错了1"), 1000)
    }).catch(error => console.log('error', error))

    console.log('步骤3') // 暂停,因为需要上一步的promise有结果,才会执行

    await new Promise((resolve, reject) => {
      console.log('步骤4')
      setTimeout(() => reject("报错了2"), 1000)
    }).catch(error => console.log('error', error))
    console.log('步骤5')
  }

运行getApi()得到的结果是:在这里插入图片描述then的写法,转成async/await的写法

// async/await 的写法更优雅,便于解读,避免嵌套
const getApi = async () => {
    console.log('getApi1')
    let promise = new Promise((resolve, reject) => {
      setTimeout(() => resolve("done!"), 1000)
    });
    let result = await promise; // 等待,直到 promise返回状态
    console.log('getApi1_result', result)
  }
 
 // then
  const list = () => {
    console.log('list1')
    let promise = new Promise((resolve, reject) => {
      setTimeout(() => resolve("done!"), 1000)
    }).then(value => {
      console.log('list1_result', value)
    })
  }
  
//getApi1  
//list1 
//getApi1_result done
//list1_result done

注意:async和await是需要搭配使用,要不然代码报错
关键字 await 让 JavaScript 引擎等待直到 promise 改变状态,并返回结果。

文章来源:https://blog.csdn.net/tangxiaobao2016/article/details/135630871
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。