我正在寫一個單頁的應用程序,並已經寫入了客戶端的數據訪問層。我的問題涉及到它的正確設計。雖然我明白JS是以回調爲中心的,但我不得不懷疑是否沒有更好的數據檢索方式。這是我目前的數據訪問的是如何與回調格式化的例子:JavaScript數據訪問設計
$interface.getDashboard = function (callback) {
callback({MyApplications:[]});
};
這裏是我想向移動,以消除回調所有的地方,需要:
$interface.getApplications = function() {
var v = amplify.store("api.applications");
if (!v) {
v = [];
_get("/api/applications", null, function (results) {
amplify.store("api.applications", results, { expires: _cacheTimeOut });
dataRefresh();
});
}
return v;
};
在上面的代碼中,dataRefresh()
會告訴所有適用的用戶刷新他們的數據。所以我想你可以說它仍然使用回調,但採用不同的方式。
有沒有更好的方法來做到這一點?我從來沒有爲JavaScript寫過一個強大的數據訪問層,並想知道是否有一種模式可能遵循約定或啓發式解決方案?
有很多框架與jQuery一起工作來管理您的單頁應用程序設計,並允許您避免意大利麪代碼。骨幹是一個 –
@BenjaminGruenbaum我聽說過骨幹,但我在這裏的嘗試是理解所需要的核心,而不是抽象自己,而只是一個黑匣子。 – doogle
@doogle是的,但調用'dataRefresh();'它會記得所有用戶的'getApplications',如你所述。但我真的認爲這是過於複雜,應該使用回調或事件驅動的異步函數 – drinchev