• Promise以及Promise.all的简单用法


    当你请求多个数据,相统一处理的时候,假设有两个单独的接口获取页面数据,两接口使用Promise处理是互不影响:

    1. //基础信息获取
    2. getPlantProductReportInfoItems() {
    3. return new Promise((resolve, reject) => {
    4. treeData[0].children = [];
    5. getPlantProductReportInfoItems({})
    6. .then(({ data: res }) => {
    7. console.log('res', res);
    8. if (res.code !== 0) {
    9. this.roleLoading = false;
    10. this.$message.config({
    11. maxCount: 1,
    12. });
    13. this.$message.destroy();
    14. return this.$message.error(res.msg);
    15. }
    16. if (JSON.stringify(res.data) != '{}') {
    17. for (let item in res.data) {
    18. let arrobj = {
    19. key: item,
    20. title: res.data[item],
    21. children: [],
    22. // disabled: !item.includes(children) ? false : true
    23. };
    24. treeData[0].children.push(arrobj);
    25. }
    26. }
    27. resolve();
    28. })
    29. .catch((error) => {
    30. //失败调用reject函数
    31. reject(error);
    32. });
    33. }).then((data) => {});
    34. },
    35. //统计数据
    36. getPlantProductReportDataItems() {
    37. return new Promise((resolve, reject) => {
    38. treeData[1].children = [];
    39. getPlantProductReportDataItems({
    40. dataType: this.dataForm.selectTime2Type,
    41. })
    42. .then(({ data: res }) => {
    43. console.log('res', res);
    44. if (res.code !== 0) {
    45. this.roleLoading = false;
    46. this.$message.config({
    47. maxCount: 1,
    48. });
    49. this.$message.destroy();
    50. return this.$message.error(res.msg);
    51. }
    52. if (JSON.stringify(res.data) != '{}') {
    53. let arrobj = {};
    54. for (let item in res.data) {
    55. arrobj = {
    56. key: item,
    57. title: res.data[item],
    58. children: [],
    59. // disabled: !item.includes(children) ? true : false
    60. };
    61. treeData[1].children.push(arrobj);
    62. }
    63. }
    64. resolve();
    65. })
    66. .catch((error) => {
    67. //失败调用reject函数
    68. reject(error);
    69. });
    70. }).then((data) => {});
    71. },

    使用Promise.all时,每一个promise对象都会返回自身。这样处理比之前一个个的调用接口速度快些。

    1. //设置弹窗
    2. handleSettingItems() {
    3. Promise.all([this.getPlantProductReportDataItems(),this.getPlantProductReportInfoItems()]).then(() => {
    4. transferDataSource = [];
    5. flatten(treeData);
    6. this.dataSource = transferDataSource;
    7. console.log("this.dataSource", this.dataSource);
    8. this.settingVisible = true;
    9. })
    10. },

  • 相关阅读:
    Windows系统搭建VisualSVN服务结合内网穿透实现公网访问
    在Kubernetes(k8s)上部署整个SpringCloud微服务应用
    细胞凋亡通路 | MedChemExpress
    vue中页面跳转白屏的解决方式,同一路由地址,参数不同跳转白屏的解决方式
    SoftwareTest3 - 要了人命的Bug
    【实习之velocity 三 Vtl-引入资源】
    渗透测试与HTTP中的PUT请求
    Maxwell 一款简单易上手的实时抓取Mysql数据的软件
    Spring Cloud搭建XXL-JOB任务调度平台
    10.9作业
  • 原文地址:https://blog.csdn.net/XU441520/article/details/125621517