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

 更新时间:2014年09月17日 09:40:32   作者:乡村运维  
这篇文章主要介绍了node.js中使用q.js实现api的promise化,promise一个标准,它描述了异步调用的返回结果,包括正确返回结果和错误处理,需要的朋友可以参考下

关于啥是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);
});

相关文章

  • nodejs实现日志读取、日志查找及日志刷新的方法分析

    nodejs实现日志读取、日志查找及日志刷新的方法分析

    这篇文章主要介绍了nodejs实现日志读取、日志查找及日志刷新的方法,涉及nodejs日期时间运算、转换及日志读写等相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • 利用node.js启动本地服务器的操作指南(超详细)

    利用node.js启动本地服务器的操作指南(超详细)

    这篇文章主要介绍了利用node.js启动本地服务器的操作指南(超详细),有很多小伙伴制作网站或者小程序时,需要通过服务器来把前端和后端连接起来,那么我们今天学习启动node.js服务器,文中有详细的代码示例和图文供大家参考,具有一定的参考价值,需要的朋友可以参考下
    2024-05-05
  • node.js中的path.normalize方法使用说明

    node.js中的path.normalize方法使用说明

    这篇文章主要介绍了node.js中的path.normalize方法使用说明,本文介绍了path.normalize的方法说明、语法、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • Node快速切换版本、版本回退(降级)、版本更新(升级)

    Node快速切换版本、版本回退(降级)、版本更新(升级)

    这篇文章主要介绍了Node快速切换版本、版本回退(降级)、版本更新(升级),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • NodeJS实现跨域的方法(使用示例)

    NodeJS实现跨域的方法(使用示例)

    CORS是一种 W3C 标准,它使用额外的 HTTP 头来告诉浏览器让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源,这篇文章主要介绍了NodeJS实现跨域的方法,需要的朋友可以参考下
    2024-05-05
  • node中npm ERR! network ‘proxy‘ 配置问题解决

    node中npm ERR! network ‘proxy‘ 配置问题解决

    在进行npm依赖管理时,可能会遇到因网络配置不当导致的错误,如npm ERR! network proxy config is set properly,下面就来介绍一下,感兴趣的可以了解一下
    2024-09-09
  • node thread.sleep实现示例

    node thread.sleep实现示例

    这篇文章主要介绍了node thread.sleep实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • koa2实现登录注册功能的示例代码

    koa2实现登录注册功能的示例代码

    这篇文章主要介绍了koa2实现登录注册功能的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • node.js事件循环机制及与js区别详解

    node.js事件循环机制及与js区别详解

    这篇文章主要为大家介绍了node.js事件循环机制及与js区别详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • node.js遍历目录的方法示例

    node.js遍历目录的方法示例

    本篇文章主要介绍了node.js遍历目录的方法示例,主要介绍了同步遍历和异步遍历两种方法,非常具有实用价值,需要的朋友可以参考下
    2018-08-08

最新评论