源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-02-16 01:27 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:node.js中使用q.js实现api的promise化
关于啥是promise以及promise解决的是啥问题,敬请体验node的回调异步编码大法,顺带移步[url=http://wiki.commonjs.org/wiki/Promises/A]http://wiki.commonjs.org/wiki/Promises/A[/url] 看看是咋定义的,在此不再赘述。 这里我们看看怎么用q.js 实现node api的promise。 [b]一、万事开始皆为install[/b]
[u]复制代码[/u] 代码如下:
npm install q
[b]二、标准node style api 的promise化方法[/b] [b]1、使用Q.nfcall[/b] 相对于Q.fcall ,Q.nfcall 就是node 的Q.fcall。
[u]复制代码[/u] 代码如下:
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); } );
[b]2、使用Q.denodeify[/b]
[u]复制代码[/u] 代码如下:
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); } );
[b]3、使用Q.deferd[/b]
[u]复制代码[/u] 代码如下:
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); } );
[b]4、使用makeNodeResolver()[/b]
[u]复制代码[/u] 代码如下:
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); });
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部