前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >什么是Async await,和Promise有什么区别

什么是Async await,和Promise有什么区别

作者头像
子夜星辰
发布于 2022-11-15 08:24:01
发布于 2022-11-15 08:24:01
1.5K00
代码可运行
举报
文章被收录于专栏:李白偷偷偷猪李白偷偷偷猪
运行总次数:0
代码可运行

前两篇文章给大家介绍了Promise和如何实现一个简单的Promise,那么什么是Async await呢,他们又有什么关系呢

Async/await:是一个用同步思维解决异步问题的方案

  1. 会自动将常规函数转换成Promise,返回值也是一个Promise对象
  2. 只有async函数内部的异步操作执行完,才会执行then方法指定的回调函数
  3. 异步函数内部可以使用await
  4. await 放置在Promise调用之前,await 强制后面点代码等待,直到Promise对象resolve,得到resolve的值作为await表达式的运算结果
  5. await只能在async函数内部使用,用在普通函数里就会报错

和Promise相比较 相同点

为了解决异步流程问题,promise是约定,而async更优雅

区别

  1. Promise是ES6,而async是ES7
  2. Promise原来有规范的意义,Promise a,b,c,d 等规范,最终确定的是Promise a+ 规范
  3. Promise链式操作,自己catch异常。async则要在函数内catch,好在现在catch成本较低
  4. Promise有很多并行神器,比如Promise.all\Promise.race等。这些是async没法搞定的
  5. Promise是显式的异步,而 Async/await 让你的代码看起来是同步的,你依然需要注意异步
  6. Promise即使不支持es6,你依然可以用promise的库或polyfil,而async就很难做,当然也不是不能,成本会高很多
  7. async functions 和Array.forEach等结合,很多tc39提案都在路上或者已经实现,处于上升期,而promise也就那样了

总结:Async/awati 简单好用,是大势,肯定得学,而async的使用绕不开Promise,所以Promise是必会的。

下面的例子简单介绍一下Async/await 使用方法;

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        function a() { 
            return new Promise((resolve, reject) => {
                setTimeout(() => { console.log('a执行'); resolve(3) }, 3000)
            });
        }

        function b() {
            return new Promise((resolve, reject) => {
                setTimeout(() => { console.log('b执行'); resolve(20) }, 2000)
            });
        }

        async function doIt() {
            try {  // async方法会吞掉所有报错信息,如果此例子中b()返回的是reject,不使用try...catch的话,无法获取到错误信息
                const res1 = await a();
                const res2 = await b();      //  这样的写法是不是很符合同步思维呢
                console.log(res1 + res2);
            } catch (err) {
                console.log(err)
            }

        }
        
		// Promise  方法调用 
		
        // function doIt() {
        //     a().then(res1 => {
        //         return b().then(res2 => {
        //             console.log(res1 + res2)
        //         })
        //     }).catch(err => {
        //         console.log(err)
        //     })
        // }

        doIt();  // a执行  b执行  23
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-07-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
初学者的机器学习入门实战教程!
这是一篇手把手教你使用 Python 实现机器学习算法,并在数值型数据和图像数据集上运行模型的入门教程,当你看完本文后,你应当可以开始你的机器学习之旅了!
kbsc13
2019/08/16
7230
必备必考 | 调参技能之学习率衰减方案(一)—超多图直观对比
作为一名合格的算法工程师,调参的技巧必不可少,接下来将有三篇关于如何调整学习率的文章分享,会设计到大量的图片,篇幅较长,希望大家能耐心读完,也不辜负我辛辛苦苦翻译过来,由于本人自身水平有限,如果有地方翻译的不够准确或不当还请原谅~
AI算法与图像处理
2019/08/16
4.5K0
必备必考 | 调参技能之学习率衰减方案(一)—超多图直观对比
【Keras】Keras使用进阶
通常用keras做分类任务的时候,一张图像往往只对应着一种类别,但是在实际的问题中,可能你需要预测出一张图像的多种属性。例如在pyimagesearch的《multi-label-classification-with-keras》这篇文章中提出了一个衣服数据集,整个数据集有两种属性,一种是颜色(blue, red, black),另一种是衣服的类型(dress, jeans, shirt) 。如假设one-hot-vector编码顺序是(blue, red, black, dress, jeans, shirt)则black jeans的 label就是[0,0,1,0,1,0]。
keloli
2019/08/12
1.2K0
用 LSTM 做时间序列预测的一个小例子
问题:航班乘客预测 数据:1949 到 1960 一共 12 年,每年 12 个月的数据,一共 144 个数据,单位是 1000 下载地址 目标:预测国际航班未来 1 个月的乘客数 import numpy import matplotlib.pyplot as plt from pandas import read_csv import math from keras.models import Sequential from keras.layers import Dense from keras
杨熹
2018/04/03
8.8K0
用 LSTM 做时间序列预测的一个小例子
在深度学习中使用Bagging集成模型
集成是一种机器学习概念,使用相同的学习算法训练多个模型。Bagging是一种减少预测方差的方法,通过使用重复组合生成多组原始数据,从数据集生成额外的训练数据。Boosting 是一种基于最后分类调整观测值权重的迭代技术。如果一条观察数据被错误地分类,它会试图增加这个观察数据的权重。总体而言,Boosting 建立了强大的预测模型。
deephub
2021/08/20
8830
Keras基本用法
Keras是目前使用最为广泛的深度学习工具之一,它的底层可以支持TensorFlow、MXNet、CNTK和Theano。如今,Keras更是被直接引入了TensorFlow的核心代码库,成为TensorFlow官网提供的高层封装之一。下面首先介绍最基本的Keras API,斌哥给出一个简单的样例,然后介绍如何使用Keras定义更加复杂的模型以及如何将Keras和原生态TensorFlow结合起来。
狼啸风云
2019/12/19
1.5K0
一个值得深思的问题?为什么验证集的loss会小于训练集的loss
在本教程中,您将学习在训练自己的自定义深度神经网络时,验证损失可能低于训练损失的三个主要原因。
AI算法与图像处理
2019/11/07
8.7K0
一个值得深思的问题?为什么验证集的loss会小于训练集的loss
深度学习 | 基于LSTM模型的黄金期货价格预测
本文数据集为黄金期货价格,可从:https://cn.investing.com/commodities/gold-historical-data进行下载。(单位 : 1金衡盎司 = 31.1034768克)
DataCharm
2021/04/16
3.2K0
深度学习 | 基于LSTM模型的黄金期货价格预测
使用用测试时数据增强(TTA)提高预测结果
当使用拟合模型进行预测时,也可以应用图像数据增强技术,以允许模型对测试数据集中每幅图像的多个不同版本进行预测。对增强图像的预测可以取平均值,从而获得更好的预测性能。
deephub
2021/01/12
3.5K0
机器学习实战--对亚马逊森林卫星照片进行分类(2)
分类准确性通常适用于二进制分类任务,每个类中具有平衡数量的示例。在这种情况下,我们既不使用二进制或多类分类任务; 相反,它是一个多标签分类任务,标签数量不均衡,有些使用比其他标签更重要。因此,Kaggle比赛组织选择了F-beta指标,特别是F2得分。这是与F1分数(也称为F-measure)相关的度量。
PM小王
2019/07/02
8790
机器学习实战--对亚马逊森林卫星照片进行分类(2)
lstm多变量时间序列预测(时间序列如何预测)
Now, we are familiar with statistical modelling on time series, but machine learning is all the rage right now, so it is essential to be familiar with some machine learning models as well. We shall start with the most popular model in time series domain − Long Short-term Memory model.
全栈程序员站长
2022/08/01
2.3K0
lstm多变量时间序列预测(时间序列如何预测)
神经机器翻译与代码(下)
该数据集可以从ManyThings.org网站获得,其中的示例来自Tatoeba项目。数据集由德语和英语单词组成,打算与Anki flashcard软件一起使用。
AiTechYun
2020/01/02
7990
机器学习实战--对亚马逊森林卫星照片进行分类(3)
如何运用迁移学习 迁移学习涉及到使用一个在相关任务上训练过的模型的全部或部分。
PM小王
2019/07/02
8740
机器学习实战--对亚马逊森林卫星照片进行分类(3)
[Python人工智能] 二十.基于Keras+RNN的文本分类vs基于传统机器学习的文本分类
从本专栏开始,作者正式研究Python深度学习、神经网络及人工智能相关知识。前一篇文章分享了循环神经网络RNN的原理知识,并采用Keras实现手写数字识别的RNN分类案例及可视化呈现。这篇文章作者将带领大家用Keras实现RNN和LSTM的文本分类算法,并与传统的机器学习分类算法进行对比实验。基础性文章,希望对您有所帮助!同时,如果文章中存在错误或不足之处,也欢迎与我探讨,作者也是初学者,非常希望您的交流能促进共同成长。感谢参考文献中基基伟老师、知乎老师们的文章,共勉~
Eastmount
2023/02/28
1.4K0
[Python人工智能] 二十.基于Keras+RNN的文本分类vs基于传统机器学习的文本分类
代码实现! 教学视频!Python学习者最易上手的机器学习漫游指南
大数据文摘作品,转载要求见文末 作者 | Conor Dewey 编译 | 糖竹子,徐凌霄,Aileen 导读:半路出山想迅速上手Python做机器学习?这篇文章就是你需要的实用指南。 毋庸置疑,近来机器学习人气日益高涨,逐渐在流行词榜单上占据一席之地。机器学习算法繁多,到底该选择哪一种处理相关数据是困扰很多学习者的问题。本文将以一种清晰简明的方式,解释并实践最常见的几种机器学习算法。 接下来,我们将罗列8种最常见火爆的机器学习算法,通过Python,将它们分别适用同一个经典数据集Iris(线性回归和逻辑
大数据文摘
2018/05/24
5610
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
我们一般用深度学习做图片分类的入门教材都是MNIST或者CIFAR-10,因为数据都是别人准备好的,有的甚至是一个函数就把所有数据都load进来了,所以跑起来都很简单,但是跑完了,好像自己还没掌握图片分类的完整流程,因为他们没有经历数据处理的阶段,所以谈不上走过一遍深度学习的分类实现过程。今天我想给大家分享两个比较贴近实际的分类项目,从数据分析和处理说起,以Keras为工具,彻底掌握图像分类任务。 这两个分类项目就是:交通标志分类和票据分类。交通标志分类在无人驾驶或者与交通相关项目都有应用,而票据分类任务
机器学习AI算法工程
2018/03/15
1.6K0
【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类
股票预测 lstm(时间序列的预测步骤)
如果对LSTM原理不懂得小伙伴可以看博主下一篇博客,因为博主水平有限,结合其他文章尽量把原理写的清楚些。
全栈程序员站长
2022/08/01
2.3K1
股票预测 lstm(时间序列的预测步骤)
如何使用keras,python和深度学习进行多GPU训练
Keras简单而优雅,类似于scikit-learn。然而,它非常强大,能够实施和训练最先进的深度神经网络。
AI算法与图像处理
2019/08/23
3.4K0
如何使用keras,python和深度学习进行多GPU训练
用 LSTM 做时间序列预测的一个小例子
问题:航班乘客预测 数据:1949 到 1960 一共 12 年,每年 12 个月的数据,一共 144 个数据,单位是 1000 下载地址(https://datamarket.com/data/set/22u3/international-airline-passengers-monthly-totals-in-thousands-jan-49-dec-60#!ds=22u3&display=line) 目标:预测国际航班未来 1 个月的乘客数 import numpy import matplo
用户1332428
2018/03/09
1.7K0
用 LSTM 做时间序列预测的一个小例子
照片解锁手机不能忍?教你用OpenCV做活体检测 | 有代码
名叫Adrian Rosebrock的程序猿,写了份事无巨细的教程,从构建数据集开始,一步步教大家用AI分辨真人和照片,精细到每行代码的用途。
量子位
2019/04/23
1K0
照片解锁手机不能忍?教你用OpenCV做活体检测 | 有代码
推荐阅读
相关推荐
初学者的机器学习入门实战教程!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验