想知道這個問題的最佳解決方案是什麼,這也不是我的實際代碼結構或名稱,而是說明問題的最簡單方法。 我有一個純粹用於執行ajax調用並使用jquery加載模板的函數。混合同步和異步javascript/jquery並在最後獲得成功函數
function load(template) {
$('#container').load(template, data, function() {
// complete code here
});
}
關注$ .load()中的第3個參數,即在請求完成時運行的回調函數。
現在,我有我的load()在另一個包裝函數功能:
function processTask(variable) {
load(variable);
}
我的問題是,我需要一些代碼來運行AJAX負荷後完成,但是因爲我的應用程序已經成長我的包裝函數processTask
可能會或可能不會調用ajax load
,因此我無法在完整回調中執行必需的代碼。
我是否更改我的$ .load()以執行同步或更好地管理我的代碼,以便如果我調用$ .load(),則將我需要的代碼放入回調中,如果不是,則將其放在我的位置需要它?
我已閱讀關於JavaScript承諾,我不確定他們是否會幫助在這種情況下。
編輯
所以我processTask
是一個對象的方法。
function classObj(name, fn) {
this.name = name;
this.processTask = fn;
this.load = function(template) {
$('#container').load(template, data, function() {
// complete code here
});
}
}
而且在上下文中我這樣做:
var task = new classObj('taskName', function() {
this.load('myFile.php');
// Or another function and not load() based on whats needed in the task.
});
基本上我有一個對象,我可以隨意添加自定義的方法,他們可以很容易地動態調用的,到現在爲止,他們一直加載文件。
_「processTask可能會或可能不會調用ajax加載,因此我無法在完整回調中執行我的必需代碼」_可以在「可能或不可以調用ajax加載」時包含「processTask」的邏輯? – guest271314
'在上下文中,我這樣做:'...您定義的加載函數不接受參數...您發佈的代碼非常混亂。對於這個問題,「this.name」,「this.processTask」有什麼意義(如果有的話)?你能簡化代碼到你有問題的部分,並且至少TRY來顯示流程邏輯......把一個像「或另一個函數」這樣的評論真的沒有幫助 –
對於混淆代碼的道歉,我的實際代碼要複雜得多,並且有很多圖層,所以我不能簡單地發佈一個例子。 – Nado11