异步编程: 一次性搞懂 Promise, async, await (#js #javascript)

作者: 奇乐编程学院分类: 计算机技术 发布时间: 2021-10-04 08:41:54 浏览:230636 次

异步编程: 一次性搞懂 Promise, async, await (#js #javascript)

随心Y_Z所欲:
学废了[doge]刚好之前写学校作业关于数据库操作就是promise,然后搞不懂的我还整了回调地狱的写法,现在知道还可以链式这么写[打call][打call] P.S. 我们这个作业真是变态,我之前都没学过js就被逼着用js写firebase数据库的异步编程[藏狐]

【回复】回复 @随心Y_Z所欲 :我就知道。。。普通1本2本3本根本不会让做这个。。。果然好学校学的东西多啊 我那时候参加计算机大赛(我是烂三本的)输给211的了 不过后来自学了微信小程序 react vue node PHP jsp asp redis MySQL sqlserver等等还学了设计模式 常用算法。。有信心可以去和好大学的同学比比了。。。奈何已经毕业了 唉。。。
封尘札记:
一口气看了好多up的视频,每个视频质量奇高短小精悍。可以看得出来每个视频都倾注了大量心血,从这个视频开始的每个视频我都会奉上三连,希望up保质保量的继续更新下去[给心心]

迪迪亚与前端与Linux:
AJAX是XMLHTTPRequest的封装,Fetch不是吧。虽然功能一样但是感觉 2:36 说的不妥当哎。而且像是Chromium的开发者工具里也把Fetch和XMLHTTPRequest分开写哦(一个选项但是斜杠分开)

【回复】我觉得不是这样吧,Ajax是客户端异步获取请求的技术概念,XHR是Ajax的一种实现,Fetch也是Ajax的实现啊。并不是说只有XHR实现的才叫Ajax,其他技术的实现就不能叫Ajax了
【回复】回复 @绛紫方糖 :谢谢你的友善讨论,我查了一下确实你说得对,海外包括MDN这样的权威文档都说AJAX > XHR&Fetch。但是国内大部分是我在最顶楼的观点(我的观点也是因此来的[笑哭]),不知道是不是jQ的ajax方法产生的误会。现在想来开发者工具里之所以Fetch和XHR并列就是因为他们是同一级。
【回复】ajax只是一个tcp协议上的技术,最初ajax封装,后来有了es6 promise再次promise基础上封装,所以fetch说白了就是个promise
NoF_轻微:
JS是主角了,开心 之前websocket学了概念还查了好久mdn才学会,这个直接上手,舒服[鹿乃_打call]

玄萧:
我发布了一篇笔记,快来看看吧 课代表来了(本视频所有概念也适用于其他异步编程的语言·):  JavaScript两种异步方式(单线程编程语言):    - 传统回调函数 (Callba... https://www.bilibili.com/h5/note-app/view?cvid=13486386&pagefrom=comment

【回复】请问这个笔记是怎么用的?
豫州唱晚:
async函数是generator函数的语法糖,阮一峰es6入门这本书有说到[tv_doge][tv_doge]

【回复】用generator写一个promise状态机,就是async await了
【回复】可以用generator yield 实现 async await 只不过不会自动执行(可以写个方法调用
zemmmmmm:
不错 顺便提亮点 1 ecma17是什么鬼 要不然用es8要不然用ecmascript2017 2 tla(top level await) 了解下 视频也不是很久之前的啊 现在这个已经很普遍了

【回复】ES6=ES2015 后面都用年份表示了 没问题啊 。别来秀了 你的喷子属性很高
外婆喊你吃饭:
问一个疑问[藏狐] async function f() { const params = {}; const res1 = await getDataOne(params); console.log('我没有跳出去'); const res2 = await getDataTwo(params); } console.log('第一个请求进行中的时候,是会跳出f函数,执行这个console,还是会继续执行f函数接下来的代码')

【回复】先执行函数中await前,然后执行函数外的同时执行await后,有个概念up没提到,就是碰到await后这个函数才变成异步的,async实际上是同步异步同时存在的,await之前是同步,之后才是异步。也就是先执行了const params的定义,然后直接执行函数外的下一句了,await后面才开始异步执行。
【回复】在同一个函数内部。是串行执行的
【回复】回复 @老实人接盘怪 :那就用普通函数不就好了
混沌水饺:
async, await 对于报错就不好写呀,还要自己加try catch,特别是每个异步不同报错不同处理的时候

【回复】try所有异步操作,catch可以根据报错分情况处理
I挂神I:
终于找到有人把同步和异步等待的区别拿出来讲了,感谢 顺便想问一下在异步等待的时候更新UI是如何实现的 以及回调和中断是一样的概念吗

【回复】异步调用getter和setter就行了
撩撩_AO:
有个疑问哈, 视频06:17 for await的写法 和promise.all() 有啥区别吗?谢谢回答~

【回复】嗨,如果他们它们等待都是 promise 数组,比如 【promise1, promise2, promise3】 那么没有区别。for await与promise.all不同之处在于它允许接受一个async generator,比如 async function* generator() { yield 1; yield 2; yield 3; }。(generator的灵活性就比数组更高了)
【回复】回复 @奇乐编程学院 :[打call][打call]
【回复】回复 @奇乐编程学院 :如果是动态创建很多个异步,如何让这些异步逐步执行呢
不动游星与宇宙耀变龙:
up,为啥要用promise.all呀,我直接把两个await都去掉不行吗。视频5分40秒那里

【回复】没有await 返回的是promise对象 要记住 只要函数存在async 那么他里面无论有没有return 他都会返回一个promise 这也是async特性之一 自动创建promise对象
【回复】这样就没法获取结果了,除非用.then这样的
【回复】不用await返回的永远是promise对象,也就没法使用返回值了
-刘波:
假如有10条数据,我用for循环,会逐个去执行这10条数据,这样会很慢啊

科技猎手 教学视频 学习 视频教程 入门 编程 教程 入门教程 JAVASCRIPT 编程开发

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!