【问题标题】:Javascript + ExpressJS - return [something] or return (nothing)?Javascript + ExpressJS - 返回 [something] 或 return (nothing)?
【发布时间】:2016-07-14 10:18:02
【问题描述】:

退货和不退货有什么区别?

举个例子:

user.save(function(err){
  if ( err && err.code !== 11000 ) {
    console.log(err);
    console.log(err.code);
    res.send('Another error showed up');
    return;
  }

  //duplicate key
  if ( err && err.code === 11000 ) {
    req.flash('error', 'User already exists');
    res.redirect('/signup');
    return;
  }

  res.locals.user = user;
  req.session.user = user;
  //res.locals.session = req.session;
  res.redirect('/');
});

如果我return res; 或只是return(什么都没有),它们似乎根本没有区别:

  //duplicate key
  if ( err && err.code === 11000 ) {
    req.flash('error', 'User already exists');
    res.redirect('/signup');
    return res;
  }

我很难理解没有 returning 任何东西。

那么为什么我们只使用return 本身?

对于像我上面这样的情况,我们为什么不return res;

【问题讨论】:

    标签: javascript node.js express mongoose return


    【解决方案1】:

    首先,user.save(function callback(){})save() 中的那个函数是一个回调函数,它会在你将用户数据保存到数据库后调用。

    其次,user.save() 没有期待任何返回值,这个回调函数只会在保存后调用。

    所以这个回调函数中的return是中断/停止函数走向运行,它的意思是完成。

    由于user.save()不期望任何返回值,所以你可以不返回任何东西或任何东西,这个return只会告诉函数结束,无论你返回什么,它都不会被使用。

    希望这能消除你的困惑。:)

    【讨论】:

      【解决方案2】:

      你不需要在这里返回任何东西。制作 res.redirect('/') 只会将您重定向到适当的回调

      这个函数是一个回调函数,不需要返回任何东西。 您返回的任何内容都不会对功能产生任何影响

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-02
        • 1970-01-01
        • 1970-01-01
        • 2012-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多