当前位置: 首页 > news >正文

async/await方法解析

欲了解await,必须先了解Promise,可参考: http://www.cnblogs.com/yanze/p/6347646.html

支持度: ES6已支持Promise,ES7也决定支持await

首先查看一个实例:

var f= ()=> {
    return new Promise((resolve, reject)=> {
        setTimeout(function(){
            console.log(1)
            resolve(1)
        }, 2000)
    })
}
        
var tryAwait= async ()=>{
    var data= await f()
    console.log(data)
}

用同步的思维方式去解决异步的代码,省去了传统方式繁琐的回调和promise方式的多重promise。

注意项:

1.await只能在async函数内使用

2.await后面一般接着promise对象,会阻塞代码,等待其返回值,当然也能是一般变量,但会立即执行

接下来是传统方式:

var f= ()=> {
    setTimeout(function(){
        console.log(1)
        traditional(1)
    }, 2000)
}
f()
var traditional= (data)=> {
    console.log(data)
}

弊端: 代码繁琐,逻辑冗杂,在多重回调的情况下尤为如此(此例也许不明显,毕竟只是实例,但相信各位也明白)

单纯promise的方式:

var f= ()=> {
    return new Promise((resolve, reject)=> {
        setTimeout(()=> {
            console.log(1)
            resolve(1)
        }, 2000)
        })
}
f().then((data)=> {
    console.log(data)
})    

弊端: 每个then方法内部都是一个独立作用域,若是想共享数据,就要将部分数据暴露在外场,在then内部赋值一次

且要是有很多then方法,代码会充满Promise方法

 

本文参考: http://www.tuicool.com/articles/ZZnuQzZ

 

 

转载于:https://www.cnblogs.com/yanze/p/7079372.html

相关文章:

  • 发送验证码倒计时效果
  • Perhaps JAVA_HOME does not point to the JDK
  • Java开发环境配置_Eclipse
  • 【转】CentOS下MySQL忘记root密码解决方法
  • 简述ASP.NET Web网页的工作原理。
  • IT职场人,切不要一辈子靠技术生存
  • SSL/TLS 握手过程详解
  • Oracle数据库重复数据删除的三种情况
  • 优化数据库大幅度提高Oracle的性能
  • java容器类
  • Oracle表连接方式之等值连接、外部连接
  • eclipse环境下,java操作MySQL的简单演示
  • 牛人博客链接
  • oracle执行计划相关概念
  • 日常(委屈到爆炸)
  • 收藏网友的 源程序下载网
  • 2019年如何成为全栈工程师?
  • Android Studio:GIT提交项目到远程仓库
  • Apache Pulsar 2.1 重磅发布
  • co模块的前端实现
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES10 特性的完整指南
  • ES6--对象的扩展
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • JavaScript标准库系列——Math对象和Date对象(二)
  • javascript从右向左截取指定位数字符的3种方法
  • overflow: hidden IE7无效
  • springMvc学习笔记(2)
  • vuex 学习笔记 01
  • Wamp集成环境 添加PHP的新版本
  • WePY 在小程序性能调优上做出的探究
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 初识 beanstalkd
  • 离散点最小(凸)包围边界查找
  • 前端自动化解决方案
  • 区块链将重新定义世界
  • 数组大概知多少
  • 我有几个粽子,和一个故事
  • 小而合理的前端理论:rscss和rsjs
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 自制字幕遮挡器
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​水经微图Web1.5.0版即将上线
  • #QT(一种朴素的计算器实现方法)
  • #QT(智能家居界面-界面切换)
  • (+4)2.2UML建模图
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (算法)前K大的和
  • **PHP二维数组遍历时同时赋值
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .L0CK3D来袭:如何保护您的数据免受致命攻击