Как заставить функции выполняться последовательно?
У меня есть две функции, назовем их functionA и functionB
Внутри каждой из этих функций находятся XHR-вызовы для загрузки файлов, если я вызываю функции следующим образом
functionA();
functionB();
Они оба будут выполняться, однако functionB может много раз заканчиваться до functionA (из-за большого размера файла, загружаемого с functionA. Но это нарушает работу моего приложения, и я бы предпочел, чтобы функция functionB работала только после того, как functionA полностью закончила загрузку своего приложения. данные.
Теперь очевидный ответ для меня сначала состоит в том, чтобы просто поместить вызов functionB внутри XHR-вызова functionA, но я не могу сделать это таким образом из-за способа настройки моего кода (commonJS sutff...)
Есть ли способ заставить функцию functiona закончить себя и вернуться до того, как функция functionB начнет?
2 ответа:
Вы можете использовать обратные вызовы, вот пример. Он в основном переходит
functionB
вfunctionA
, а затем вызываетfunctionB
в концеfunctionA
var functionA = function(cb) { //do some stuff cb(); }; var functionB = function() { //do some stuff }; functionA(functionB);
Кроме того, если вы загуглите обратные вызовы javascript, вы найдете много различных статей о них. Достаточно, чтобы Вы были заняты чтением в течение некоторого времени.
Вы также можете заглянуть в библиотеки, такие как async.JS.
Эти библиотеки вводят понятие обещаний в ваш код и уменьшают хаос всех асинхронных обратных вызовов.