利用q.js实现node 常用api的promise化

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

1、万事开始皆为install

npm install q

2、标准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);
});

时间: 2024-09-20 05:58:42

利用q.js实现node 常用api的promise化的相关文章

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

关于啥是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 就是n

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

  这里我们看看怎么用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'

immutable.js 在React、Redux中的实践以及常用API简介

简介 这个immutable Data 是什么鬼,有什么优点,好处等等,我就不赘述了,这篇Immutable 详解及 React 中实践讲的很透彻. 一个说明不可变的例子 这个可变和不可变是相对于 JavaScript原生引用类型来说的. // 原生对象 let a1 = { b: 1, c: { c1: 123 } }; let b1 = a1; b1.b = 2; console.log(a1.b, b1.b); // 2, 2 console.log(a1 === b1); // true

Node.js中npm常用命令大全_node.js

npm是什么 NPM的全称是Node Package Manager,是随同NodeJS一起安装的包管理和分发工具,它很方便让JavaScript开发者下载.安装.上传以及管理已经安装的包. npm install 安装模块 基础语法 npm install (with no args, in package dir) npm install [<@scope>/]<name> npm install [<@scope>/]<name>@<tag>

seajs的常用api简易文档

目前使用sea.js的公司越来越多, 比如朋友网,阿里巴巴,淘宝网,百姓网,支付宝,有道云笔记等.模块化的javascript开发带来了可维护,可扩展性,尤其在多人协作开发的时候不用再担心文件依赖和函数命名冲突的问题,有点扯远了,下面罗列了seajs常用的api和代码示例 seajs.config seajs.use seajs.cache seajs.reslove seajs.data 常见问题 关于模块标识 关于路径 seajs.config  alias 别名配置,配置之后可在模块中使用

Javascript操作DOM常用API总结

转载自:http://www.cnblogs.com/lrzw32/p/5008913.html Javascript操作DOM常用API总结 文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前,首先我们来复习一下一些基本概念,这些概念是掌握api的关键,必须理解它们. Node类型 DOM1级定义了一个Node接口,该接口由DOM中所有节点类型实现

「开往春天的 Node.js」 - Node 地下铁第二期线下沙龙总结

前言 寒冬已逝,春之伊始. 3 月 26 日下午,Node 地下铁第 2 次线下沙龙在上海世博展览馆万信酒店举行.本次沙龙邀请了四位在不同领域应用 Node.js 进行探索的大牛,带着我们在温暖的午后,感受 Node.js 的魅力. 虽然当天是近来久违的好天气,而且会场地点有些偏,但这些都没有令同学们对 Node.js 的热情衰减,13 点半签到,很快会议室的位置所剩无几了,在这里,组委会感谢各位同学的支持. 回顾 Node.js 源站的发展与挑战 淘宝首页是淘宝很重要的一个页面,它原本一直运行

Promise实现之q.js

q.js在nodejs里是一个非常流行的promise库,支持浏览器端使用,详情请点击这里 q.js跟async要解决的问题差不多,都是解决回调函数的嵌套问题,避免嵌套层级太深导致一系列的问题.只是q.js是以promise来实现回调的扁平化,而async则是通过流程来控制多个异步回调的处理. q.js的所有方法操作的对象都得是一个promise对象,下面来说说怎么用q来创建promise对象 下面所有实例统一在nodejs环境里执行,请执行下面命令安装q.js,然后引用它 npm instal

通过Knockout.js + ASP.NET Web API构建一个简单的CRUD应用

较之面向最终消费者的网站,企业级Web应用对用户体验的要求要低一些.不过客户对"用户体验"的要求是"与日俱增"的,很多被"惯坏了"的用户已经不能忍受Postback带来的页面刷新,所以Ajax在企业级Web应用中得到了广泛的应用.企业级Web应用的一个特点是以"数据处理"为主,所以"面向绑定"的Knockout.js 是一个不错的选择.ASP.NET Web API,作为.NET平台最好的REST服务开发平