加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

JS异步编程六种方案

发布时间:2019-01-22 08:00:15 所属栏目:建站 来源:浪里行舟
导读:媒介 我们知道Javascript说话的执行情形是单线程。也就是指一次只能完成一件使命。假若有多个使命,就必需列队,前面一个使命完成,再执行后头一个使命。 这种模式固然实现起来较量简朴,执行情形相对纯真,可是只要有一个使命耗时很长,后头的使命都必需

假如哀求两个文件,毫无相关,可以通过并发哀求

  1. let fs = require('fs')  
  2. function read(file) {  
  3.   return new Promise(function(resolve, reject) {  
  4.     fs.readFile(file, 'utf8', function(err, data) {  
  5.       if (err) reject(err)  
  6.       resolve(data)  
  7.     })  
  8.   })  
  9. }  
  10. function readAll() {  
  11.   read1()  
  12.   read2()//这个函数同步执行  
  13. }  
  14. async function read1() {  
  15.   let r = await read('1.txt','utf8')  
  16.   console.log(r)  
  17. }  
  18. async function read2() {  
  19.   let r = await read('2.txt','utf8')  
  20.   console.log(r)  
  21. }  
  22. readAll() // 2.txt 3.txt 

八、总结

1.JS 异步编程进化史:callback -> promise -> generator -> async + await

2.async/await 函数的实现,就是将 Generator 函数和自动执行器,包装在一个函数里。

3.async/await可以说是异步终极办理方案了。

(1) async/await函数相对付Promise,上风表此刻:

  •  处理赏罚 then 的挪用链,可以或许更清楚精确的写出代码
  •  而且也能优雅地办理回调地狱题目。

虽然async/await函数也存在一些弱点,由于 await 将异步代码改革成了同步代码,假如多个异步代码没有依靠性却行使了 await 会导致机能上的低落,代码没有依靠性的话,完全可以行使 Promise.all 的方法。

(2) async/await函数对 Generator 函数的改造,表此刻以下三点:

  •  内置执行器。

Generator 函数的执行必需靠执行器,以是才有了 co 函数库,而 async 函数自带执行器。也就是说,async 函数的执行,与平凡函数千篇一律,只要一行。

  •  更广的合用性。 co 函数库约定,yield 呼吁后头只能是 Thunk 函数或 Promise 工具,而 async 函数的 await 呼吁后头,可以跟 Promise 工具和原始范例的值(数值、字符串和布尔值,但这时等同于同步操纵)。
  •  更好的语义。 async 和 await,比起星号和 yield,语义更清晰了。async 暗示函数里有异步操纵,await 暗示紧跟在后头的表达式必要守候功效。
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读