Убедитесь, что вы используете асинхронный запрос, так как синхронный запрос блокирует браузер (что объясняет блокировку графического интерфейса).
Если это не ваша проблема, я думаю, вы хотите что-то вроде этой очереди задач.
var queue = [];
queue.push(someTaskFunction);
queue.push(anotherTaskFunction);
// ...
var runQueue = (function () {
var len = queue.length, task = 0;
for (; task < len; task++) {
yield queue[task]();
}
}());
Позвоните runQueue.next()
, чтобы выполнить следующее задание. Оберните его в оператор try..catch следующим образом:
try {
runQueue.next();
} catch (e if (e instanceof StopIteration)) {}