2015-06-11 67 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并返回$结果似乎是非常重要的(因为获得$结果),请将代码添加到您的问题 –