node.js promise 流程控制

promise 一个标准,Promise也已经纳入了ES6,而且高版本的chrome、firefox浏览器都已经原生实现了Promise,它描述了异步调用的返回结果,包括正确返回结果和错误处理,可以解耦异步调用中的复杂嵌套问题。关于详细的说明文档可以参考 Promises/A+ 。目前实现 promise 标准的模块有很多,如 Q 、 bluebird 和 Deferred ,下面我们以 Q 为例,介绍一下 promise 在 nodejs 中的使用方法。

有这么一个场景:有三个文件file1、file2、file3,按照先后顺序依次读取,然后拼接起来(或者说一个函数用到另外一个函数的值)。

传统通过回调嵌套方式实现同步,来保障拼接的字符串不会乱。

var str = 'begin';
fs.readFile('file1.txt', function(err, data1) {
	str += data1;
	fs.readFile('file2.txt', function(err, data2) {
		str += data2;
		fs.readFile('file3.txt', function(err, data3) {
			str += data3;
		});
	});
});
我们现在采用基于promise规范的Q

安装:npm install q

引入项目:var Q = require('q');

首先将上面3层嵌套代码解耦和,并用Q.deferred构建

var Q = require('q'),
	fs = require('fs');

var str = 'begin';

function read1(data) {
	var deferred = Q.defer();
	fs.readFile('file1.txt', function(err, data1) {
		if (err) {
			deferred.reject(err);
		} else {
			deferred.resolve(data += '~' + data1);
		}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值