...подтягиваю данные из бд с помощью xmlhttprequest. Бывает такое, что ответ от сервера приходится ждать более минуты,..
на вашем месте при таком раскладе я бы в первую очередь разобрался с работой бд, которая отдает данные больше минуты. Это номер раз.
Второе - если там реально дохренища данных - бить на куски и делать несколько запросов, по окончании загрузки 1 куска стартовать второй и тд, так можно будет прервать работу на клиенте, а не на сервере, что гораздо проще как вы понимаете.
Вариант 3, при нагруженных вычислениях - запускать на сервере скрипт в отдельном потоке, результат писать в какое-либо хранилище (можно прям обратно в бд, но думаю редис для этого более подходящий вариант), запрашивать результат лонг поллингом или по таймеру через каждые н секунд.