zoukankan      html  css  js  c++  java
  • async

    async函数

    • 关键字
      async await
    • async

    1.async函数返回一个 Promise 对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。
    2.用来定义一个返回 AsyncFunction 对象的异步函数。异步函数是指通过事件循环异步执行的函数,它会通过一个隐式的 Promise 返回其结果。

    • 使用await关键字后

    1.一个 Promise对象 被传递给一个 await 操作符,await 将等待 Promise 正常处理完成并返回其处理结果
    2.await 表达式会暂停当前 async function 的执行,等待 Promise 处理完成。若 Promise 正常处理(fulfilled),其回调的resolve函数参数作为 await 表达式的值,继续执行 async function。
    3.await必须在async声明的函数内部使用,否则会报错
    4.如果不加await关键字返回的的是一个处理的promise对象,这里是async函数返回的promise对象和await没有关系,//这里是自己的理解

    • await 将等待 Promise 正常处理完成并返回其处理结果案例
    async function log(){
    var data=await getapi();
    console.log(data);//这里使用await之后返回的结果是Promise 正常处理完成并返回其处理结果: 在代码下方 
    
    
    }
    
    async function getapi() {
          var data = $.ajax({//使用的是jQuery ajax
            url: 'https://api.apiopen.top/developerLogin',//此处是ajax请求地址
            type: "post",//请求方法
            data: {//发送的请求的数据        
              name: 411524,
              passwd: 411524
            },
            
          })
         
          return data;
        }
    

    这是加await返回的结果
    这是加await返回的结果alt
    **这是不加await返回的结果,async函数会返回一个promise对象 **

    • 任何一个await语句后面的promise对象出现reject状态,那么整个async函数都会中断执行
    async function f() {
      await Promise.reject('出错了');
      await Promise.resolve('hello world'); // 不会执行
    }
    

    jQuery中的ajax封装的时候已经加上了promise对象,所以不用再次使用promise对象包裹

    $.ajax({
          url: 'http://59.110.138.169/admin/login/doLogin',
          dataType: 'json',
          type: 'post',
          data: {
            username: 2222222,
            password: 1111111,
            yan: 222222,
          }
        })
    //相当于
    new Promise((res, rej) => {
          $.ajax({
            url: 'http://59.110.138.169/admin/login/doLogin',
            dataType: 'json',
            type: 'post',
            data: {
              username: 2222222,
              password: 1111111,
              yan: 222222,
            },
            success(resq) {
              res();
            },
            faile(resq) {
              rej(resq);
            }
          })
        })
    
  • 相关阅读:
    jQuery学习之------对标签属性的操作
    jQuery学习之------选择器
    PHP读取mysql中的数据
    sql server 数据库创建链接服务器访问另外一个sql server 数据库
    SQLServer使用链接服务器远程查询
    解决SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问的方法
    Delphi XE10百集视频教程计划
    Windows 版本的iTunes 修改iPhone的备份路径
    Centos7 下mysql 密码重置
    Windows server 2012文件服务器配置
  • 原文地址:https://www.cnblogs.com/shiazhen/p/11871969.html
Copyright © 2011-2022 走看看