node.js中使用q.js实现api的promise化
作者:bea
关于啥是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.
关于啥是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);
});
有用 | 无用
这里我们看看怎么用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);
});
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- js用Date对象的setDate()函数对日期进行加减操作
- JS应用正则表达式转换大小写示例
- 使用不同的方法结合/合并两个JS数组
- js实现按Ctrl+Enter发送效果
- javascript搜索框点击文字消失失焦时文本出现
- 输入框过滤非数字的js代码
- 小结Node.js中非阻塞IO和事件循环
- JavaScript将取代AppleScript?
- Javascript MVC框架Backbone.js详解
- JS回调函数的应用简单实例
- js实现在同一窗口浏览图片
- js实现获取焦点后光标在字符串后
- 在JavaScript中构建ArrayList示例代码
- 取得元素的左和上偏移量的方法
- JS实现OCX控件的事件响应示例
- javascript快速排序算法详解
- js生成的验证码的实现与技术分析
- Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
- nodejs命令行参数处理模块commander使用实例