dojo 检查是否所有的异步http请求是完成的

gorkyyrv  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(152)

我的纯JS应用程序中有多个异步HTTP请求,但是当它们加载时,会阻碍应用程序的有效工作。我想显示一个加载指示器,但我不知道如何处理异步请求。
我试过了,我检查了数组中,我发出了多少请求,当这些请求没有完成时,我显示了一个加载指示器,但是因为这些请求是异步的,在第一组完成后,又出现了另一组,因为它们之间存在依赖关系。
有什么办法可以解决这个问题吗?

zed5wv10

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();
      });
}

相关问题