簡體   English   中英

Node.js中的“完成”回調函數是什么?

[英]What is “done” callback function in 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})

這只是一個成功的回調。 沒什么特別的。

您可以使用分解和箭頭功能像這樣在ES6中重寫它:

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

如同

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

在node.js中,通過將異步函數的錯誤作為當前函數的回調的第一個參數返回來處理異步函數中的錯誤,這被視為標准做法。 如果存在錯誤,則會向第一個參數傳遞一個帶有所有詳細信息的Error對象。 否則,第一個參數為null。

因此,done的第一個參數可能是錯誤,第二個是實際值

docs

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM