利用generator(thunk化函数/promise方法)处理回调地狱的问题

在Nodejs中是通过回调函数控制异步过程的,但是当多个事件之间相互依赖,或多个事件一起协作时,就会导致函数嵌套过深的情况。如下是一个在项目中显示文章详情页的的代码,我们看到这个函数嵌套了七八层。这样的嵌套很容易因为缺少括号发生错误。另外,当一个回调函数中出现错误,整个程序就会退出,并提示错误信息。 //查看文章详细信息app.get("/detail/:author/:title"
摘要由CSDN通过智能技术生成

在Nodejs中是通过回调函数控制异步过程的,但是当多个事件之间相互依赖,或多个事件一起协作时,就会导致函数嵌套过深的情况。如下是一个在项目中显示文章详情页的的代码,我们看到这个函数嵌套了七八层。这样的嵌套很容易因为缺少括号发生错误。另外,当一个回调函数中出现错误,整个程序就会退出,并提示错误信息。

        //查看文章详细信息
app.get("/detail/:author/:title",function(req,res){

var isAgree = false;
var isColl = false;
var isAttention = false;
console.log(req.session.user);
Post.getOne({author: req.params.author,title: req.params.title}, function (err, post) {
  if (err) {
    req.flash('error', err); 

    console.log(err);
  }
  //判断是否已点赞
  if ( req.session.user && post.agree &&post.agree.indexOf(req.session.user.email)>=0 ) {
    isAgree = true;
  }
  //判断是否已收藏
  if ( req.session.user && post.postcoll.indexOf(req.session.user.email)>=0 ) {
    isColl = true;
  }
  User.getOne({email:req.params.author},function(err,author_detail){
    if( req.session.user && req.session.user.attention && req.session.user.attention.indexOf(req.params.author) >=0){
      isAttention = true;
    }
    console.log(isAttention);
  //获取作者的头像(昵称的问题)
    Post.getTen({tags:{$in:post.tags}},1,{pv:-1},function(err, posts, totle,userImg){
      if ( err ){
        console.log(err);
      }
      Post.countPost({author:req.session.user.email},function(err,count){
        if(err){
          console.log(err);
         }
      //访问量增加

      Post.viewNum( {author: req.params.author,title: req.params.title},function(err){
        Post.getArchive({author:req.session.user.email},function(err,docs){
          console.log(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值