2015-05-11 6 views
5

Mam problem z synchronizowaniem ładowania skryptów i wykonywania ich z jQuery.jquery wiele opóźnień w tym

Co mam wygląda podobny do tego:

// Load Libraries in 'when' 
$.when(
    loadJSFile("lib1.js"), 
    loadJSFile("lib2.js") 
    loadJSFile("lib3.js") 
).then(function() { 
    // Load JS files that use the library files 
    loadJSFile("file1.js"); 
    loadJSFile("file2.js"); 
    loadJSFile("file3.js"); 
    // needs to return deferred object... 
}).then(function() { 
    // Call functions declared in file1, file2 and file3 
    func1(); 
    func2(); 
    func3(); 
}); 

loadJSFile ładuje plik javascript poprzez $ .getScript, jeśli nie jest już zawarte w w DOM, zwracając $ .getScript obietnicy lub nic nie wraca , jeśli jest już dołączony.

Myślę, że pierwsze wywołanie musi zwrócić Obietnicę/Odroczoną, ale jak to zrobić z 3 Odroczonymi obiektami?

Powyższy kod wywołuje 3 funkcje (func1, func2 i func3) przed plik1 do plików file3 są załadowane ...

Odpowiedz

4

myślę pierwszą następnie wywołać musi powrócić Promise/odroczony, ale jak zrobić Robię to z 3 obiektami odroczonymi?

Robisz to już dla pierwszego zestawu skryptów - $.when zwraca obietnicę, która rozwiązuje się, gdy wszystkie obietnice zostaną rozwiązane.

należy go używać do drugiego zestawu, a także:

$.when(
    loadJSFile("lib1.js"), 
    loadJSFile("lib2.js") 
    loadJSFile("lib3.js") 
).then(function() { 
    // Load JS files that use the library files 
    return $.when(
     loadJSFile("file1.js"), 
     loadJSFile("file2.js"), 
     loadJSFile("file3.js") 
    ) 
}).then(function() { 
    // Call functions declared in file1, file2 and file3 
    func1(); 
    func2(); 
    func3(); 
}); 

Jednakże, ponieważ jesteś widocznie za pomocą tego skryptu asynchronicznego ładowania, można zajrzeć do bardziej kompletnego rozwiązania jak RequireJS.

Powiązane problemy