node.js中使用q.js实现api的promise化


Posted in Javascript onSeptember 17, 2014

关于啥是promise以及promise解决的是啥问题,敬请体验node的回调异步编码大法,顺带移步http://wiki.commonjs.org/wiki/Promises/A 看看是咋定义的,在此不再赘述。

这里我们看看怎么用q.js 实现node api的promise。

一、万事开始皆为install

npm install q

二、标准node style api 的promise化方法

1、使用Q.nfcall

相对于Q.fcall ,Q.nfcall 就是node 的Q.fcall。

var FS = require('fs'),

    Q   = require('q'),

    colors = require('colors'),

    file = 'example.txt';

var fsReadFile = Q.nfcall(FS.readFile,file,encoding);

fsReadFile.then(function(result){

console.log((“invoke in nfcall ” + file).red);

console.log(result.green);

},function(error){

console.log(“invoke in nfcall”.red);

console.log(error.toString().red);

}

);

2、使用Q.denodeify

var fsReadFile_denodeify = Q.denodeify(FS.readFile);

 

fsReadFile_denodeify(file,encoding).then(function(result){

    console.log("invoke in denodeify".red);

    console.log(result.green)

},function(error){

    console.log("invoke in denodeify".red);

    console.log(error.toString().red);

}

);

3、使用Q.deferd

var fsReadFile_deferd = function(file,encoding){

    var deferred = Q.defer();

    FS.readFile(file,encoding,function(error,result){

    if(error){

        deferred.reject(error.toString().red);

    }

    deferred.resolve(result);

});

 

return deferred.promise;

};

 

fsReadFile_deferd(file).then(function(result){

    console.log("invoke in deferd".red);

    console.log(result.toString().green);

},function(error){

    console.log("invoke in deferd".red);

    console.log(error.toString().red);

}

);

4、使用makeNodeResolver()

var fsReadFile_makeNodeResolver = function(file,encoding){

    var deferred = Q.defer();

    FS.readFile(file,encoding,deferred.makeNodeResolver());

    return deferred.promise;

};

 

fsReadFile_makeNodeResolver(file,encoding).then(function(result){

    console.log("invoke in makeNodeResolver".red);

    console.log(result.green);

},function(error){

    console.log(error.toString().red);

});
Javascript 相关文章推荐
jQuery实现的立体文字渐变效果
May 17 Javascript
基于JavaScript实现 获取鼠标点击位置坐标的方法
Apr 12 Javascript
js 高效去除数组重复元素示例代码
Dec 19 Javascript
jquery1.10给新增元素绑定事件的方法
Mar 06 Javascript
jQuery中:checkbox选择器用法实例
Jan 03 Javascript
详解Javacript和AngularJS中的Promises
Feb 09 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
JavaScript Uploadify文件上传实例
Feb 28 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
Dec 06 Javascript
Vue+webpack+Element 兼容问题总结(小结)
Aug 16 Javascript
cdn模式下vue的基本用法详解
Oct 07 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
Javascript判断文件是否存在(客户端/服务器端)
Sep 16 #Javascript
ie8下修改input的type属性报错的解决方法
Sep 16 #Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 #Javascript
JavaScript的各种常见函数定义方法
Sep 16 #Javascript
JavaScript中合并数组的N种方法
Sep 16 #Javascript
JavaScript的null和undefined区别示例介绍
Sep 15 #Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 #Javascript
You might like
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
php头像上传预览实例代码
2017/05/02 PHP
类似CSDN图片切换效果脚本
2009/09/17 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
JavaScript中提前声明变量或函数例子
2014/11/12 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
2019/07/19 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[02:43]2018DOTA2亚洲邀请赛主赛事首日TOP5
2018/04/04 DOTA
py2exe 编译ico图标的代码
2013/03/08 Python
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python执行使用shell命令方法分享
2017/11/08 Python
python发送邮件脚本
2018/05/22 Python
Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
2018/12/03 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
python多线程下信号处理程序示例
2019/05/31 Python
用sqlalchemy构建Django连接池的实例
2019/08/29 Python
Python基本类型的连接组合和互相转换方式(13种)
2019/12/16 Python
用Python制作mini翻译器的实现示例
2020/08/17 Python
Python制作数据预测集成工具(值得收藏)
2020/08/21 Python
多视角3D逼真HTML5水波动画
2016/03/03 HTML / CSS
详细的大学生创业计划书模板
2014/01/27 职场文书
安全生产先进个人材料
2014/02/06 职场文书
我为自己代言广告词
2014/03/18 职场文书
装修协议书范本
2014/04/21 职场文书
医院搬迁方案
2014/06/14 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
开国大典观后感
2015/06/04 职场文书
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python