javascript – node.js回调中’done’和’next’之间的区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – node.js回调中’done’和’next’之间的区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2105字,纯文字阅读大概需要4分钟。
内容图文
![javascript – node.js回调中’done’和’next’之间的区别](/upload/InfoBanner/zyjiaocheng/702/06b4b58752b04a13b41495f04122e0e6.jpg)
在护照[configure authentication]文档中,它有一个相当可怕的功能,使用神秘的功能“完成”.
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function (err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
现在,在express documentation中有很多方法可以传递下一个叫做next的东西.
app.use(function(err, req, res, next){
console.error(err.stack);
res.status(500).send('Something broke!');
});
这是两个框架,快递和护照之间的区别吗?或者他们正在做两件事吗?
解决方法:
这是两个框架,快递和护照之间的区别吗?
不,它们的用途与它们的目的不同. Express用作node.js上的应用程序框架,其中passport只处理Web应用程序的身份验证部分.
关于next()
next()是connect的一部分,inturn是一个明确的依赖.调用next()的目的是触发express堆栈中的下一个中间件.
要以更简单的方式理解next()概念,您可以查看基于express here构建的示例应用程序.
正如您在指向的行中所看到的,应用程序使用路由级中间件来检查用户是否已登录.
app.get('/account', ensureAuthenticated, function(req, res){
这里确认是经过验证的中间件,它是在底部定义的
function ensureAuthenticated(req, res, next) {
if (req.isAuthenticated()) { return next(); }
res.redirect('/login')
}
正如您可以看到用户是否经过身份验证,该函数调用next()并将控制权传递给上面编写的路由处理程序中的下一层,否则即使不调用next()也会重定向到另一个路径
关于完成()
另一方面,done()用于触发我们为护照身份验证编写的返回URL处理程序.要了解有关完成方式的更多信息,您可以查看passport here处的代码示例,并查看标题为“自定义回调”的部分
app.get('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/login'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/users/' + user.username);
});
})(req, res, next);
});
这里passport.authenticate的第二个参数是您将从护照策略调用的done()的定义.
注意
在这里,我在上面提供的两个链接中的示例代码有助于理解其行为而不是文档.我建议你也这样做.
内容总结
以上是互联网集市为您收集整理的javascript – node.js回调中’done’和’next’之间的区别全部内容,希望文章能够帮你解决javascript – node.js回调中’done’和’next’之间的区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。