最近在学习Node,并使用Node在做第一个(图片分享类)小项目,把学习中的点滴记录下来,以后可以温故而知新...
服务器端:
Node + Wilddog(野狗) 0.7.2 + (...)
众所周知因为Node的异步特点,在使用中会出现大量的回调函数,陷入回调地狱,回调会让我们无法正常的 return / throw 等。。
如:
function showdata(){
var data=[];
//此处是各种回调嵌套取得data(此处我使用的是wilddog);
return data
}
上面的函数首先返回的是一个空的数据数组data(在很多类似的情况中可能会产生各种莫名奇妙的意外错误);
那么下面会渲染一个空数据的页面:
router.get('/', function(req, res) {
var data = showdata();
render("index",{
data:data
})
})
Promise 更多关于promise的信息请自行百度查询。
为什么用bluebird?发现大家都比较推崇就跟随潮流吧。。。
bluebird 自行构造
new Promise(function(function resolve, function reject) resolver) -> Promise
更多api信息请查阅 bluebird api
wilddog的使用:
on ( type , callback , [cancelCallback] , [context] )
var wilddog = require('wilddog');
var ref = new Wilddog("https://.wilddogio.com/student");
ref.on("value",function(snapshot){
//获取到数据快照
},function(e){
//错误处理
});
简单示例:把wilddog的on事件监听promise化:
var onQuery = function(ref,event){
return new Promise(function (resolve,reject) {
ref.on(event,function (snapshot) {
resolve(snapshot);
},function(err){
reject(err);
});
});
}
使用:
var ref = new wilddog('https://.wilddogio.com/student');
onQuery(ref,"value").then(function (data) {
console.log("成功"+data);
}).catch(function (err) {
console.log("错误"+ err);
})