Anugular嵌套$ http调用需要很长时间才能执行

时间:2018-01-15 17:19:44

标签: javascript angularjs

在我的角度App中。我有大约6到7个http链接请求,执行所有请求需要很长时间。如何优化这个?

empSvc.getallEmp().then(function (data) {
    if (data !== null && data.length > 0) {
        repos.saveEmp(data).then(function () {
            repos.getemp().then(function (result) {
                ctrl.emp= result;
                getsubordinates().then(function () {
                    deleteinactive(data).then(function () {
                        deleteinactiveSubordinate(ctrl.emp).then(function () {
                           console.log(success);

                        });
                    });
                });
            });
        });

1 个答案:

答案 0 :(得分:0)

它与角度本身无关。如果您的http调用很慢,那么由于您的网络连接速度,有效负载大小和后端服务器处理能力,它们很慢。

如果编写后端api函数和路由由您决定,那么您可以编写一个自定义api路由,将所有这些6-7请求合并为一个,并立即分发所有必需的数据。

例如,如果你有类似的东西。 1)下载产品类别 2)下载类别产品 3)下载产品详细信息 4)下载产品评论 5)下载产品评级。

您可以编写一个快捷方式路由,在一个结果集中返回所有这些信息。

e.g /products/{category}/all

and returns data:
{
  category: "Shoes",
  id: 2,
  related_categories: [1,3]
  products: [{
    id: 100,
    brand: "some random brand",
    color: "red",
    comments: ["awesome shoes"]
    ratings: [1,2,3]
  }]
}

将请求合并为一个可以显着提高速度并减少开销。

如果您的查询不依赖于先前查询的数据,那么您可以尝试一次性并行执行它们。无需任何更多信息,无法提供帮助。

根据您帖子的更新进行快速更新。 如果不更详细地了解这些功能的作用,我只想猜测一下:

看起来角度应用尝试删除某处的非活动用户。 这首先是你需要在前端做些什么吗?

我确定后端服务器可以使用cron作业自动删除非活动用户。

您正在下载"数据"到你的前端 - 只发送回服务器不变? 至少似乎是这样。

详细说明这些功能的作用。他们提交请求的地方