当前位置: 首页 > 面试题库 >

何时在Node.js中使用next()并返回next()

周泰
2023-03-14
问题内容

场景 :考虑以下是节点Web应用程序的代码部分。

app.get('/users/:id?', function(req, res, next){
    var id = req.params.id;
    if (id) {
        // do something
    } else {
        next(); //or return next();
    }
});

问题 :我正在检查公正next()或公正哪一个return next()。上面的示例代码对两者的工作原理完全相同,并且在执行方面没有任何区别。

问题有人 可以对此加以说明,何时使用next()和何时使用return next()以及一些重要的区别吗?


问题答案:

有人总是写return next()是为了确保执行在触发回调后停止。

如果您不这样做,则可能要冒第二次触发回调的风险,这通常会造成灾难性的后果。您的代码可以正常使用,但我会将其重写为:

app.get('/users/:id?', function(req, res, next){
    var id = req.params.id;

    if(!id)
        return next();

    // do something
});

它为我节省了缩进级别,当我稍后再次阅读代码时,我确定没有办法next被调用两次。



 类似资料:
  • 问题内容: 我对虚无和回报有些“困惑”。通常,我知道在方法中使用void而不返回任何内容,而当我想将某些内容返回到调用代码时,则在方法中使用return。 但是在下面的代码中,我可以同时使用两者,而我的问题是,使用哪个? 以及如何确定?与性能有关吗? 通常,在两种情况下我的结果相同。 谢谢! 问题答案: 此方法: 您更改的内部状态,但此方法的调用者不知道的最终值。 在以下方法中,您将提示调用者的最

  • 问题内容: 我在node.js中看到了很多用处。 它是什么,它来自哪里?它有什么作用?我可以在客户端使用它吗? 抱歉,在这里使用了它:http : //dailyjs.com/2010/12/06/node- tutorial-5/ 寻找loadUser函数。 问题答案: 这似乎是Node.js控制流代码中的变量命名约定,其中将对要执行的下一个函数的引用提供给回调,以使它在完成后启动。 例如,请参

  • 问题内容: 在护照[配置身份验证]文档中,它具有看上去很吓人的功能,该功能使用了神秘功能“完成”。 现在,在快速文档中,有许多方法可以传递称为next的方法。 这是快递和护照这两个框架之间的区别吗?还是他们在做两件事? 问题答案: 这是快递和护照这两个框架之间的区别吗? 不,它们的用途不同。Express用作node.js上的应用程序框架,其中护照仅处理Web应用程序的身份验证部分。 关于next

  • 问题内容: 经过15年的VB6和MySql之后,我对node和mongo还是陌生的。我确定这不是我的最终程序要使用的东西,但是我需要对如何在另一个模块中调用函数并返回结果有一个基本的了解。 我希望模块具有打开数据库,在集合中查找并返回结果的功能。我可能还想在该模块中为其他集合添加更多功能。现在,我需要它尽可能简单,以后可以添加错误处理程序等。我花了几天的时间在函数周围尝试不同的方法,module.

  • 问题内容: 我有python背景,目前正在迁移到node.js。由于其异步特性,我无法适应node.js。 例如,我试图从MySQL函数返回一个值。 经过一番阅读后,我意识到上面的代码无法正常工作,由于node.js的异步特性,我需要返回一个promise。我无法编写像python这样的node.js代码。如何转换为返回承诺,以及如何处理返回的值? 实际上,我想做的就是这样。 如何以可读的方式在n

  • 问题内容: 我正在编写一个简单的请求处理程序以返回一对CSS文件。使用fs.readFileSync,这很容易。但是,我很难使用异步版本的readFile完成相同的任务。下面是我的代码。将我的response.write()方法调用拆分到两个不同的回调中似乎是有问题的。有人可以指出我做错了什么吗?有趣的是,如果我将response.end()放在第一个else语句中,则此代码有效。但是,这产生了一