建设银行杭州分行网站,wordpress 文章id连续,个人网站备案通过后,信息技术制作网站首页本文摘抄自阮一峰老师的 http://es6.ruanyifeng.com/#docs/generator-async 异步 所谓异步#xff0c;简单说就是一个任务不是连续完成的#xff0c;可以理解成该任务被人为分成两段#xff0c;先执行第一段#xff0c;然后转而执行其他任务#xff0c;等做好…本文摘抄自阮一峰老师的 http://es6.ruanyifeng.com/#docs/generator-async 异步 所谓异步简单说就是一个任务不是连续完成的可以理解成该任务被人为分成两段先执行第一段然后转而执行其他任务等做好了准备再回过头执行第二段。 比如有一个任务是读取文件进行处理任务的第一段是向操作系统发出请求要求读取文件。然后程序执行其他任务等到操作系统返回文件再接着执行任务的第二段处理文件。这种不连续的执行就叫做异步。 相应地连续的执行就叫做同步。由于是连续执行不能插入其他任务所以操作系统从硬盘读取文件的这段时间程序只能干等着。 回调函数 JavaScript 语言对异步编程的实现就是回调函数。所谓回调函数就是把任务的第二段单独写在一个函数里面等到重新执行这个任务的时候就直接调用这个函数。回调函数的英语名字callback直译过来就是重新调用。 Promise 回调函数本身并没有问题它的问题出现在多个回调函数嵌套。代码不是纵向发展而是横向发展很快就会乱成一团无法管理。因为多个异步操作形成了强耦合只要有一个操作需要修改它的上层回调函数和下层回调函数可能都要跟着修改。这种情况就称为回调函数地狱callback hell。 Promise 对象就是为了解决这个问题而提出的。它不是新的语法功能而是一种新的写法允许将回调函数的嵌套改成链式调用。采用 Promise连续读取多个文件写法如下。 1 var readFile require(fs-readfile-promise);2 3 readFile(fileA)4 .then(function (data) {5 console.log(data.toString());6 })7 .then(function () {8 return readFile(fileB);9 })
10 .then(function (data) {
11 console.log(data.toString());
12 })
13 .catch(function (err) {
14 console.log(err);
15 }); Promise 提供then方法加载回调函数catch方法捕捉执行过程中抛出的错误。 Promise 的最大问题是代码冗余原来的任务被 Promise 包装了一下不管什么操作一眼看去都是一堆then原来的语义变得很不清楚。 那么有没有更好的写法呢 Generator 函数 http://es6.ruanyifeng.com/#docs/generator-async转载于:https://www.cnblogs.com/norcoA3/p/9211551.html