美文网首页
async/await 异步处理

async/await 异步处理

作者: Do_Du | 来源:发表于2020-03-06 16:20 被阅读0次

业务需求:就是首先先进行一个ajax请求,然后再进行下一个ajax请求,而下一个请求需要使用上一个请求得到的数据,这样一层层嵌套很繁琐。
使用async 、await 异步处理这种问题会使代码很优美

先上一段代码:
需求:test1方法执行后再执行test2方法
普通方法

function test1(params){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            if (params >1) {
                resolve('test1 resolve')
            }else{
                 reject('test1 reject')
            }
        },2000)
    })
}
function test2(){
    console.log('test2')
}
function get(params){
    test1(params).then(res=>{
      console.log(res)
      test2()
    })
}
get(2)
返回 image.png

重点来了:使用async、await 异步处理

function test1(params){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            if (params >1) {
                resolve('test1 resolve')
            }else{
                 reject('test1 reject')
            }
        },2000)
    })
}
function test2(){
    console.log('test3')
}
async function get(params){ // 方法前加关键字 async 异步
    await test1(params).then(res=>{console.log(res)}) // 加await 等待此方法请求成功后 再执行下一段代码
    test2()
    
}
get(2)
返回 image.png

若不加关键字async和await则执行顺序不如人意(有变)

function test1(params){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            if (params >1) {
                resolve('test1 resolve')
            }else{
                 reject('test1 reject')
            }
        },2000)
    })
}
function test2(){
    console.log('test2')
}
function get(params){
    test1(params).then(res=>{console.log(res)})
    test2()
}
get(2)
返回 image.png

借用例子:

  function getCode(){
      return axios.get('json/code.json');
  }
   function getlist(params){
      return axios.get('json/person.json',{params})
    }
          function getFinal() {
              getCode().then(function(res) {
                if (res.data.code == 0) {
                  var params = {
                    code: res.data.code
                  }
                  getlist(params).then(function(res) {
                    if (res.data.code == 0) {
                      console.log(res.data.list)
                    }
                  })
                }
              })
            }
            getFinal()

          // 改用async异步处理
          async function getResult() {
              try {
                const code = await getCode()
                if (code.data.code == 0) {
                  var params = {
                    code: code.data.code
                  }
                  const list = await getlist(params)
                  console.log(list.data.list)
                }
              } catch (err) {
                console.log(err)
              }
            }
            getResult()

相关文章

  • async和await

    浅谈Async/Await用 async/await 来处理异步 async和await async:声明一个异步...

  • ES8(一) —— async&await

    目录 async和普通函数的区别 await async/await处理多回调异步 async和await必须配合...

  • flutter中compute和isolate

    async和await:对于普通的任务,使用async和await可实现异步处理任务,而async的处理方式并非使...

  • Promise和async/await

    Promise和async/await都是异步处理的方法。async/await看起来更简单易用。 Promise...

  • async/await和Promise杂谈

    前言 Promise和async/await是当前前端最常见的异步程序处理方式,async/await是基于Pro...

  • [Flutter] 异步操作和 HTTP 请求

    async 和 await Dart 语言支持函数进行异步操作的处理,使用 async 和 await。第一步将函...

  • async

    async/await特点 async/await更加语义化,async是“异步”的简写,async functi...

  • 理解用 async/await 来处理异步

    理解用 async/await 来处理异步 async的用法 async 作为一个关键字放到函数前面,用于表示函数...

  • async/await --- 异步处理

    async用法(作为关键字放到函数前面) 调用timeout函数会返回一个promise对象。 看下打印结果 as...

  • async/await 异步处理

    业务需求:就是首先先进行一个ajax请求,然后再进行下一个ajax请求,而下一个请求需要使用上一个请求得到的数据,...

网友评论

      本文标题:async/await 异步处理

      本文链接:https://www.haomeiwen.com/subject/ertwrhtx.html