我的纯JS应用程序中有多个异步HTTP请求,但是当它们加载时,会阻碍应用程序的有效工作。我想显示一个加载指示器,但我不知道如何处理异步请求。我试过了,我检查了数组中,我发出了多少请求,当这些请求没有完成时,我显示了一个加载指示器,但是因为这些请求是异步的,在第一组完成后,又出现了另一组,因为它们之间存在依赖关系。有什么办法可以解决这个问题吗?
zed5wv101#
让我们假设你有这样的代码:
function doAjax(params, callback) { // ... callback(ajaxResponse, error); } function doRequests() { doAjax(params, (success, error) => { if(error) console.error(error); console.log(success); }); doAjax(params2, (success, error) => /* ... */); // ... }
你可以很容易地改写成承诺:
function doAjax(params) { return new Promise((resolve, reject) => { // ... if(error) reject(error); else resolve(ajaxResponse; }); } function doRequests() { showLoader(); Promise.all(doAjax(params), doAjax(params2), /* ... */) .then((results) => { console.log(results); hideLoader(); }) .catch(error => { console.error(error); hideLoader(); }); }
1条答案
按热度按时间zed5wv101#
让我们假设你有这样的代码:
你可以很容易地改写成承诺: