javascript - Node.js 中的“完成”回调函数是什么?
问题描述
大多数 npm 包总是在其页面中使用“完成”回调函数。我很难理解它。例如:
passport.serializeUser(function(user, done) {
done(null, user.id);
});
这是我的理解:
“done”是一个回调函数,因此它的任务是保存“null”和“user.id”的结果。如果是这样,持有“null”有什么意义?我们不能说done(user.id)
吗?
如果我的理解是错误的,上面代码的解释是什么?
此外,该代码是用旧的 javascript 编写的。我们如何用箭头函数或如果可能的话用 async/await 用现代 javascript 编写它?
我尝试使用 async/await 编写。这个对吗?
passport.serializeUser(async (user)=>{
return await user.id})
解决方案
passport.serializeUser(function(user, done) {
done(null, user.id);
});
如同
passport.serializeUser(function(user, callback) {
callback(null, user.id);
});
在 node.js 中,通过将异步函数中的错误作为当前函数回调的第一个参数返回来处理错误被认为是标准做法。如果有错误,第一个参数将传递一个带有所有详细信息的 Error 对象。否则,第一个参数为空。
出于这个原因,done 的第一个参数是可能的错误,第二个是实际值
推荐阅读
- javascript - .subscribe 方法中的 this.heroes 在 Angular 的英雄教程中指的是什么?
- python - 转换 python datetime.datetime
- spring - spring cloud 合约 - 游览 - 请求正文问题
- python - 使用一行的 DataFrame 是否比使用系列慢得多?
- c++ - 如何确定将使用哪个模板
- javascript - 如何从引导下拉菜单中获取值(jQuery)
- powerbi - 如何更改 Power BI Desktop 字段列表中显示的表的图标?
- slack-api - 无法识别 Slack 用户 ID 并出现错误:“user_not_found”
- javascript - 如何过滤具有多个条件的 JavaScript 对象
- laravel - Laravel 策略授权的自定义消息