首先,我不會否認我對承諾非常陌生,並試圖更好地管理我的新Node.js應用程序中的承諾。基於我從朋友和社區那裏聽到的信息,我正在使用藍鳥。這裏有一個場景:在藍鳥的順序流程中管理異步操作
的應用程序有一個註冊流程,一個典型的使用情況在以下事件,以註冊新用戶發生:
- 如果用戶已經存在檢查。
- 如果不是,請添加新用戶。
- 發送驗證電子郵件。
我確實有3個獨立的函數來解決上述每個步驟。
現在,這裏是我想出了利用諾言流...但不知何故,我不相信下面的代碼:
user.isExistingUser(email)
.then((successData) => {
if(successData && successData.length === 0) {
user.signUp(signUpInfo)
.then((successData) => {
emailService.sendVerificationEmail(recipientInfo)
.then((successData) => {
res.json(responseUtility.getApiResponse(successData));
})
.catch((errorObj) => {
res.json(responseUtility.getApiResponse(null, null, errorObj));
});
})
.catch((errorObj) => {
res.json(responseUtility.getApiResponse(null, null, errorObj));
});
} else {
res.json(responseUtility.getApiResponse(null, [{
param: 'email',
msg: 'An account already exists with this email'
}], null));
}
})
.catch((errorObj) => {
res.json(responseUtility.getApiResponse(null, null, errorObj));
});
正如你可以看到代碼似乎有點太長了,可以成爲跟蹤有點棘手。這裏的一些藍鳥專家可以幫助提供更好或更易讀的代碼嗎?
確實[這](https://jsfiddle.net/18dbrwxv/1/)幫助 –
@JaromandaX感謝快速反應......我不知道會發生什麼,如果電子郵件驗證步驟失敗......在任何錯誤可以在最後捕獲.catch塊嗎?我也想知道如果我可以在藍鳥中使用.mapseries api嗎? – NiK
是的,單catchblock將捕獲任何拒絕 - 我不知道藍鳥承諾糖,我獨家使用本機承諾 - 儘管藍鳥驚人的明顯的性能優勢 - 不知道爲什麼你會在這種情況下使用它 –