【ES6】一个页面上需要等两个或多个ajax的数据请求成功以后才正常显示(使用Promise.all和Promise.race)

【ES6】一个页面上需要等两个或多个ajax的数据请求成功以后才正常显示(使用Promise.all和Promise.race)

Pomise

Pomise.all

  • Promise.all将多个Promise实例聚合成一个新的Promise实例。请求成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败的值(即如果有一个Pomise失败,则整个Pomise都返回失败)。
  • Promise.all获得的成功结果数组里的数据顺序和Promise.all接收到的数组顺序是一致的,即使Promise1的结果获取的比Promise2要晚。

具体代码如下

javascript 复制代码
<template>
  <div id="app"></div>
</template>
<script>
import { getuser, getlist, getdetail } from "@/api/api";
export default {
  name: "App",
  data() {
    return {};
  },
  mounted() {
    this.getData();
  },
  methods: {
    //获取后端数据
    async getData() {
      let Promise1 = await getuser(); //调用成功
      let Promise2 = await getlist(); //调用成功
      let Promise3 = await getdetail(); //调用失败
      let Promise4 = await getdetail(); //调用失败
      Promise.all([Promise1, Promise2])
        .then((result) => {
          console.log(result); //[[用户信息], [用户列表]]
        })
        .catch((error) => console.log(`Error in promises ${error}`));

      Promise.all([Promise1, Promise2, Promise3, Promise4])
        .then((result) => {
          console.log(result); //调用失败。返回Promise3错误信息
        })
        .catch((error) => console.log(`Error in promises ${error}`));
    },
  },
};
</script>

Promise.race

  • Promise.race(Promise1, Promise2, Promise3)里面哪个结果返回得的快,就返回那个结果,不管结果本身是成功状态还是失败状态。
相关推荐
一个游离的指针15 小时前
ES6新特性:let、const、块级作用域
开发语言·javascript·es6
星_离2 天前
《Ajax - 实战基础篇》
前端·ajax
李纲明2 天前
WordPress 结账页一直转圈不跳支付:AJAX、缓存排除、支付回调和 REST 怎么逐层核
运维·ajax·缓存·wordpress·woocommerce·devdiy·结账
FRing036 天前
JavaScript入门到精通二十六(变量提升、函数剩余参数、展开运算符、ES6箭头函数)
开发语言·前端·javascript·es6·箭头函数
爱吃火鸡面呀7 天前
Spark RDD 行动算子(Action)详解
windows·ajax·spark
MandalaO_O7 天前
SpringMVC 响应返回值类型笔记
okhttp
এ慕ོ冬℘゜8 天前
es6理论总结
前端·javascript·es6
小羊没烦恼!10 天前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
酷炫码神10 天前
Day 6|ES6+ 语法:把现代 JS 写顺手,从解构到 map / filter / reduce
前端·javascript·es6
脉动数据行情11 天前
Java OkHttp 对接国际期货批量行情 SpringBoot 定时落库实践
java·spring boot·okhttp