Как заставить функции выполняться последовательно?


У меня есть две функции, назовем их functionA и functionB

Внутри каждой из этих функций находятся XHR-вызовы для загрузки файлов, если я вызываю функции следующим образом

functionA();
functionB();

Они оба будут выполняться, однако functionB может много раз заканчиваться до functionA (из-за большого размера файла, загружаемого с functionA. Но это нарушает работу моего приложения, и я бы предпочел, чтобы функция functionB работала только после того, как functionA полностью закончила загрузку своего приложения. данные.

Теперь очевидный ответ для меня сначала состоит в том, чтобы просто поместить вызов functionB внутри XHR-вызова functionA, но я не могу сделать это таким образом из-за способа настройки моего кода (commonJS sutff...)

Есть ли способ заставить функцию functiona закончить себя и вернуться до того, как функция functionB начнет?

2   2  

2 ответа:

Вы можете использовать обратные вызовы, вот пример. Он в основном переходит functionB в functionA , а затем вызывает functionB в конце functionA

var functionA = function(cb) {
    //do some stuff
    cb();
};
var functionB = function() {
    //do some stuff
};
functionA(functionB);

Кроме того, если вы загуглите обратные вызовы javascript, вы найдете много различных статей о них. Достаточно, чтобы Вы были заняты чтением в течение некоторого времени.

Вы также можете заглянуть в библиотеки, такие как async.JS.

Эти библиотеки вводят понятие обещаний в ваш код и уменьшают хаос всех асинхронных обратных вызовов.

Https://github.com/caolan/async#readme

Http://www.html5rocks.com/en/tutorials/async/deferred/