Posts tagged with Promise


这篇文章作为之前两篇文章的延续,来的稍微有点迟。 * 如何优雅地写js异步代码 * 如何优雅地写js异步代码(2) 时隔一年,以上两篇文章内容或有过时,请读者自行斟酌。好下面正式开始本文内容。 循环的方式 假设我们有个数组,包含 5 个数字:let times = [100, 150, 200, 250, 300]; 还有一个异步的睡觉方法:sleep(time, cb)。 import Promise from 'bluebird'; // 当没有 cb 时,返回一个 Promise 对象…

在文章开始前,先介绍一个背景。著名的异步框架 async 中有一个 waterfall 方法(官方示例),该方法用于控制异步的流程非常直观而且方便,就像下面这样: async.waterfall([ function Task1(callback) { callback(null, 'a'); }, function Task2(last, callback) { // last now equals 'a' callback(null, 'b'); }, function Task3(last, callback) { // last now…

Rock with async/await 本篇文章是作为上一篇的续集,考虑到第一篇的篇幅,还有更重要的一点就是上一篇讲的内容已经可以直接应用在最新版本的Node.js和一些高级浏览器(Chrome,FF)中,具体兼容性可参考:https://kangax.github.io/compat-table/es6/。 而这一篇讲的内容,是ECMAScript 2016(ES7)的async/await特性,目前的兼容性可参考:http://kangax.github.io/compat-table/esnext/#test-async_functions,虽然现在来看还不是非常乐观,但是我们可以通过第三方的代码转换工具(…

本文通过一个简单的需求:读取文件并备份到指定目录(详见第一段代码的注释),以不同的js代码实现,来演示代码是如何变优雅的。对比才能分清好坏,想知道什么是优雅的代码,先看看糟糕的代码。 不优雅的代码是什么样的? 1、 回调地狱 /** * 读取当前目录的package.json,并将其备份到backup目录 * * 1. 读取当前目录的package.json * 2. 检查backup目录是否存在,如果不存在就创建backup目录 * 3. 将文件内容写到备份文件 */ fs.readFile('./package.json', function(err, data) { if (err) { console.error(err)…