2015-06-11 66 views
-1

我有一個javascript回調函數被異步調用,而不是等待一個掛起的結果。Javascript回調函數沒有被正確調用

UploadMyScript.submitTitle = function(id, callback){ 
    // contacts webservice and returns $result 
    createObject(id, $result); 
} 
function createObject(id, result){ 
    var filename = UploadMyScript._('paraHeading_'+id).innerHTML; 
    var uniq_id = UploadMyScript._('paraHeading_'+id).dataset.uniq_id; 
    var object = new UploadMyScript.title_fileName(result, filename, uniq_id); 
} 

的submitTitle功能是從一個click事件稱爲:

subm_btn.addEventListener('click', function() { 
    UploadMyScript.submitTitle(this.id, createObject); 
}); 

我知道正在返回$result,但只有延遲之後。在返回$result之前調用回調函數createObject()。我不明白爲什麼會這樣。

+0

因爲您沒有使用承諾。你怎麼知道函數被異步調用?看到這個例子:https://gist.github.com/jeffcogswell/8257755 –

+1

'//聯繫webservice並返回$ result'似乎是這個問題的一個重要部分。你可以發佈它,還是給我們一些僞代碼? – CodingIntrigue

+0

我知道結果正在通過使用console.log()返回。 – dave

回答

0

您不是調用回調函數,而是調用另一個函數。

UploadMyScript.submitTitle = function(id, callback){ 
    callback(id, $result); 
} 
+0

這是一個很好的觀點,但它們仍然在'submitTitle'內調用'createObject',它是以'callback'的形式傳入的。所以這不是答案 – CodingIntrigue

+0

//聯繫webservice並返回$結果似乎是非常重要的(因爲獲得$結果),請將代碼添加到您的問題 –