wilddog(野狗)js sdk和promise(bluebird)的结合使用

最近在学习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);
  })






你可能感兴趣的:(wilddog(野狗)js sdk和promise(bluebird)的结合使用)