Как использовать обещания для вызова функции после завершения ранее вызванной функции?
Например, я хочу динамически загрузить скрипт и вызвать функцию, объявленную в скрипте. Я сделал это без обещаний и получил функцию not found error. Любая помощь с тем, как использовать обещания для решения такого рода проблемы?
Мой код JS следующий:
jQuery ( document ). ready ( function ()
{
// setup option bar
addScript ("../js/optionBar.js") ; // add script dynamically
setupOptionBar ("WatchDog") ; // function declared in optionBar.js
} ) ;
function addScript ( url )
{
var script = document. createElement ("script") ;
script. src = url ;
document. head. appendChild ( script ) ;
}
Другие варианты - включить JS статически или объявить функцию в основном JS. Но я хочу знать, как это можно сделать с помощью обещаний, так как с такими проблемами регулярно сталкиваются при кодировании в JS.
Edit:
Несмотря на то, что текущая проблема решается, у меня все тот же вопрос. Давайте посмотрим на это другим примером.
jQuery ( document ). ready ( function ()
{
jQuery ( div ). css ( { "height" : "200px" } ) ; // modifying heights of 30 divs
jQuery ("#div30"). html ( jQuery ("#div30"). css ("height") ) ; // should put 200 in #div30 but 100 appears as modification is still in progress
} ) ;
Как можно решить такую проблему? Потому что технически я должен ждать выполнения вышеуказанного оператора ...
Edit # 2:
Задача - добавить обработчик событий ко всем событиям, начинающимся с определенного идентификатора. Во время выполнения обработчик добавляется ко всем событиям, но для каждого обработчика отображается только описание последнего элемента. Мое понимание подсказывает мне это из-за асинхронного характера JS. Пожалуйста, помогите ...
JS Fiddle: http://jsfiddle.net/xpvt214o/707184/
jQuery ("[id^='WTM_appOptionTitle_']"). each ( function ()
{
module = jQuery ( this ). attr ("id"). replace ("WTM_appOptionTitle_" , "") ; // store name of module
jQuery ("#WTM_appOptionTitle_" + module ). hover (
function ()
{
jQuery ("#WTM_appOptionDescription_" + module ). addClass ("wtm_appoptiondescriptionshow") ; // module has the value of last module only when this statement is executed
} ,
function ()
{
jQuery ("#WTM_appOptionDescription_" + module ). removeClass ("wtm_appoptiondescriptionshow") ;
} ) ;
} ) ;
Спасибо всем за терпение и помощь ...