Javascript的promise,async和await的区别详解


Posted in Javascript onMarch 24, 2022

终于把promise, async, await的区别和联系弄清楚了,看下面代码

写法1,2是promise的写法

写法6是async和await的写法

主要看第2种写法和第6中写法即可, 第2种写法是promise的典型写法,第6中写法是async, await的典型写法

// 以下三个请求依次执行
req1 = () => { return fetch("http://example.com/api/v1/get")}
req2 = () => { return fetch("http://example.com/api/v1/post")}
req3 = () => { return fetch("http://example.com/api/v1/delete")}
//写法1
req1().then(res=>{
    console.log("1: ",res)
    req2().then(res =>{
        console.log("2: ",res)
        req3().then(res =>{
            console.log("3: ",res)
        })
    })
})

// 写法2
req1().then(res =>{
    console.log("1: ", res)
    return req2()
})
.then(res =>{
    console.log("2: ", res)
    return req3()
})
.then(res =>{
    console.log("3: ", res)
})
// 写法3
function f1(){
    req1()
    req2()
    req3()
}
// 写法4
async  function f2(){
    await req1
    await req2
    await req3
}
// 写法5
async  function f3(){
    req1().then(res => {
        console.log("1:", res)
    })
    await f3_1()
}
async function f3_1(){
    req1().then(res => {
        console.log("2:", res)
    })
    await f3_2()
}
async function f3_2(){
    req2().then(res=>{
         console.log("3: ",res)
    })
}
// 写法6
ff()
async function ff(){
    await req1_good()
}
async function req1_good(){
    fetch("http://example.com/api/v1/get").then(res =>{
        console.log("1: ",res)
    })
    await req2_good()
}
async  function req2_good() {
    fetch("http://example.com/api/v1/post").then(res =>{
        console.log("2: ",res)
    })
    await req3_good()
}
async function req3_good() {
     fetch("http://example.com/api/v1/delete").then(res => {
         console.log("3: ",res)
     })
}
  • 最外层的async函数调用之后立即返回了,但是async还是里面还是在逐层执行
  • await的作用是等待其修饰的函数内部的所有await函数都执行完毕,
  • 从最外层启动一个async函数相当于go一个协程,await func 也相当于go 一个协程,不同在于await = go + waitgroup
  • await比promise高明的地方在于,promise在then里面调用另一个promise时,不得不return另一个promise再then, 或者在then中回调,但是await完全不需要
  • async是为了异步,await是为了异步+阻塞,缺一不可

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注三水点靠木的更多内容!   

Javascript 相关文章推荐
File, FileReader 和 Ajax 文件上传实例分析(php)
Apr 27 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
Jun 27 Javascript
juery框架写的弹窗效果适合新手
Nov 27 Javascript
用Javascript获取页面元素的具体位置
Dec 09 Javascript
JavaScript创建一个object对象并操作对象属性的用法
Mar 23 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
Jun 20 Javascript
input 禁止输入特殊字符的四种实现方式
Aug 24 Javascript
jQuery Ajax File Upload实例源码
Dec 12 Javascript
微信小程序实现人脸识别
May 25 Javascript
vue 组件中添加样式不生效的解决方法
Jul 06 Javascript
微信小程序实现跑马灯效果
Oct 21 Javascript
一起来看看Vue的核心原理剖析
Mar 24 #Vue.js
手写Spirit防抖函数underscore和节流函数lodash
Mar 22 #Javascript
深入讲解Vue中父子组件通信与事件触发
Mar 22 #Vue.js
关于Vue中的options选项
Mar 22 #Vue.js
vue+echarts实现多条折线图
vue使用echarts实现折线图
浅谈Vue的computed计算属性
You might like
php利用iframe实现无刷新文件上传功能的代码
2011/09/29 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
mac下多个php版本快速切换的方法
2016/10/09 PHP
List the Codec Files on a Computer
2007/06/18 Javascript
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
javascript与CSS复习(《精通javascript》)
2010/06/29 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
JSON字符串转换JSONObject和JSONArray的方法
2016/06/03 Javascript
JS声明式函数与赋值式函数实例分析
2016/12/13 Javascript
jquery.cookie.js的介绍与使用方法
2017/02/09 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
微信小程序页面间跳转传参方式总结
2019/06/13 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
标记环网Toke Ring IEEE802.5
2014/05/26 面试题
基于Python 函数和方法的区别说明
2021/03/24 Python
升职自荐信
2013/11/28 职场文书
办理护照介绍信
2014/01/16 职场文书
大型演出策划方案
2014/05/28 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
防灾减灾活动总结
2014/08/30 职场文书
2014旅游局领导班子四风问题对照检查材料思想汇报
2014/09/19 职场文书
授权委托书范本(单位)
2014/09/28 职场文书
简历中自我评价范文
2015/03/11 职场文书