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异步加载 JavaScript脚本解决方案
Apr 20 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
Mar 04 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
Oct 12 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
May 03 Javascript
漂亮实用的页面loading(加载)封装代码
Feb 03 Javascript
微信小程序 仿猫眼实现实例代码
Mar 14 Javascript
通过示例彻底搞懂js闭包
Aug 10 Javascript
react native与webview通信的示例代码
Sep 25 Javascript
基于vue中对鼠标划过事件的处理方式详解
Aug 22 Javascript
vue全局自定义指令-元素拖拽的实现代码
Apr 14 Javascript
微信小程序如何再次获取用户授权的方法
May 10 Javascript
JavaScript前后端JSON使用方法教程
Nov 23 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 SQL防注入代码集合
2008/04/25 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
2010/04/12 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
PHP重载基础知识回顾
2020/09/10 PHP
extJs 文本框后面加上说明文字+下拉列表选中值后触发事件
2009/11/27 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
jQuery中获取Radio元素值的方法
2013/07/02 Javascript
jquery Tab效果和动态加载的简单实例
2013/12/11 Javascript
通过实例理解javascript中没有函数重载的概念
2015/06/03 Javascript
JavaScript数据结构与算法之链表
2016/01/29 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
2016/10/18 Javascript
js实现表格筛选功能
2017/01/18 Javascript
js数字舍入误差以及解决方法(必看篇)
2017/02/28 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python中 logging的使用详解
2017/10/25 Python
python 基本数据类型占用内存空间大小的实例
2018/06/12 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
详解python解压压缩包的五种方法
2019/07/05 Python
详解Django admin高级用法
2019/11/06 Python
公司财务自我评价分享
2013/12/17 职场文书
高三英语教学反思
2014/01/13 职场文书
敬老文明号事迹材料
2014/01/16 职场文书
会计学生自我鉴定
2014/02/06 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
党支部工作总结2015
2015/04/01 职场文书
永不妥协观后感
2015/06/10 职场文书
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP