十四课回调终极解决方案promise async await_第1页
十四课回调终极解决方案promise async await_第2页
十四课回调终极解决方案promise async await_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

AsyncawaitAsyncawait是异这里的业务就是读取1.txt之后根据AsyncawaitAsyncawait是异这里的业务就是读取1.txt之后根据1.txt中的文件路径继续读取别的文件,相比之前回调函数的阅确实强了不少,但我们总觉得类似于这种业务我们能不能有一个更好的解决事实上我们只要使用Async与await就能实现类似于上面的表现形123456789functionreadFile(path){returnnewPromise((resolve,reject)=>{fs.readFile(path,'utf8',(erreject(err);//出错了我们调用reject传递错误对resolve(data);//读取成功使用}functionletpath=path=letresult=console.log(result);}functionreturnnewreject(err);//出错了我们调用reject传递错误对resolve(data);//读取成功使用resolve} returnreadFile(s.toString());//返回Promise对 读出数据2.txt returnreadFile(s.toString());//返回Promise对象读出数据3.txt console.log(s)//返回Promise对象//3.txt文件的内容console.log("错误处理!!!",err);//上面的所有Promies过程出错都可以在此处捕捉 }//async关}//async关键词标识后面的函数是一个异asyncfunction//await函数如果遇到异步函数会阻塞和面代码的执行,直到readFile的状态改letpath=awaitreadFile('1.txt');path=awaitreadFile(path);letresult=awaitreadFile('path')}Async函数到底事实上Async函数本质上就是一个Promise,如果返回值不是一个Promise他会自动将其转换为Promise,返回,上面的代码我们返回了一个字符串常量它发现不是一个Promise对象变回调用Promise.resolve('hello'),然后返回这Await做了什么Await我们可以认为他是Asyncwait的简写,意思很明白就是等待一个异步函数的执行,而且需要注意的是必须包含在async声明的函数中,如果你尝试放在外面就会报其实也很容易理解为什么会需要写在async函数内部,因为await以后会阻塞后面的代码,如果直接用失去了异步的意义,直接用同步代码读取就好了,为什么还要加个await呢?之所以要用awiat就是为了用同步代码的方式写异步调用,123456789constfs=functionreadFile(path){returnnewPromise((resolve,reject)=>{fs.readFile(path,'utf8',(erreject(err);//出错了我们调用reject传递错误对resolve(data);//读取成功使用}}add(x,y){return}asyncfunctiontestleta=await1;//同步代码调用await没有任何意义asyncfunctionreturn"hello!"3letrel=console.log(rel);>>>print //恍然大悟....原来async函数返回的是一个promise//上面的这些代码不//上面的这些代码不需要写await没有任何意义因为本来就是同步的写与不写都一样letdata=awaitreadFile('1.txt');//异步代码加了await会等待状态的改变获取返回值//如果要处理异常怎么办呢?在Async函数中我们处错误用}1asyncfunctiontestlet

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论