我正在調整我的身份驗證JavaScript模塊,以便使用一個JavaScript類鉤子.js-auth-ui
來處理我的Web應用程序的身份驗證,同時使用數據類型屬性來引用正確的函數。如何降低根據數據類型調用回調函數的複雜度?
在掃描js鉤子的DOM之後,我通過init函數運行它,如下所示,它依次運行一個exec函數,該函數可以調用回適當的函數。
我想知道是否有一種更有效的方式來編寫execAuthUi函數,而不是所有其他如果根據我的linting規則增加其「複雜性」評級。
const execAuthUi = function ($element) {
const data = $element.data();
if (data.type === "account-login-form") {
authLoginEmail($element, data);
} else if (data.type === "account-logout") {
authLogout($element);
} else if (data.type === "account-reset") {
authReset($element);
} else if (data.type === "account-signup-form") {
authSignup($element);
}
};
const initAuthUi = function () {
const $notLoaded = $_jsElements.not(".is-initialized");
let $element = null;
let i = $notLoaded.length;
for (i; i--;) {
$element = $_jsElements.eq(i);
$element.addClass("is-initialized");
execAuthUi($element);
}
};
也許考慮開關/ case語句? – Spaceman
也personaly我不會考慮這個和過於複雜的功能。也許你只是有一個熱情的棉絨。 – Spaceman
@SpaceSpace謝謝我同意,他們有點困難。但是,複雜性實際上比這個例子更加極端,所以我想提出一些更高效的方法。我還處理一些其他功能:'authLoginFacebook'和'authLoginTwitter'。這個主題中的想法非常有幫助。謝謝! – jasonbarone