登录
注册
node.js 学习社区
q.js 使用示例

陈伟钦

2015-02-11 16:02

q.js 是nodejs开发过程中,使用的一种异步控制流程,采用了promise风格,功能类似于async.js,而async 用的是原始的callback风格。

github地址 https://github.com/kriskowal/q

npm地址是 https://www.npmjs.org/package/q

var Q=require('q.js');
var getFileContent = function(file){
	var defer = Q.defer();
	fs.readFile(file, "utf8",function(err,data){			
		if(!err){
			defer.resolve(data);//成功就返回数据
		}else{
			defer.reject(err);//失败就返回错误
		}			
	});
	return defer.promise;//必须返回promise
}

getFileContent("../test.txt").then(function (data) { //then方法两个匿名函数作为参数,第一个成功时执行,第二个失败时执行,
    console.log(data);
}, function (error) {	   
    console.error(error);
});


//q.js 的 all 方法,并发执行多个异步操作
function delay(value) {
    return Q.delay(value, 500);//延迟500毫秒
}

Q.all([//执行多个函数
    delay(10),
    delay(20),
    delay(30)
])
.spread(function (r1,r2,r3) {//对应的多个返回值
    console.log(r1,r2,r3);
    return r1+r2+r3;
})
.done(function(result){
	console.log(result);
});

回复 · 1

发表回复

你可以在回复中 @ 其他人