2015-06-11 7 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 вызывается из события щелчка:

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

Я знаю, что $result возвращается, но только после задержки. Функция обратного вызова createObject() вызывается перед возвратом $result. Я не понимаю, почему это так.

+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

Это хороший момент, но они по-прежнему вызывают 'createObject', который передается как' callback', внутри 'submitTitle'. Так что это не ответ – CodingIntrigue

+0

// контакты webservice и возвращает $ result, кажется, очень важно (потому что получается $ result), добавьте код на свой вопрос –

Смежные вопросы