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

来源:互联网 发布:大数据分析师招聘 编辑:程序博客网 时间:2024/05/01 19:04

最近在学习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://<appId>.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://<appid>.wilddogio.com/student');  onQuery(ref,"value").then(function (data) {    console.log("成功"+data);  }).catch(function (err) {    console.log("错误"+ err);  })






0 0