首页 > 解决方案 > 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})

标签: javascriptnode.jscallbackasync-await

解决方案


passport.serializeUser(function(user, done) {
  done(null, user.id);
});

如同

passport.serializeUser(function(user, callback) {
  callback(null, user.id);
});

在 node.js 中,通过将异步函数中的错误作为当前函数回调的第一个参数返回来处理错误被认为是标准做法。如果有错误,第一个参数将传递一个带有所有详细信息的 Error 对象。否则,第一个参数为空。

出于这个原因,done 的第一个参数是可能的错误,第二个是实际值

文档


推荐阅读