zoukankan      html  css  js  c++  java
  • 利用Promise实现数据多个请求加载完成时执行某个方法

    在实际开发中常常有些业务的数据是来自多个接口的,因为ajax是异步,这样就导致我们需要判断是否请求到了数据然后在做其他的逻辑,在Promise没有出现之前,通常我们的解决方法是,第一粗暴的改异步为同步,但这样会造成阻塞,异步好像又失去了意义,第二也就是大家常用的解决办法用回调既一个异步执行完成后在执行下一个请求,这样看比第一种要好太多了,但是问题又来了,延迟延迟延迟,请求越多最后的那个请求延迟就会越严重,而且这样请求多了之后逻辑就会变得很乱。。。痛苦不堪,还好es6带来的Promise正好能解决这个东西,关于Promise具体详情请百度,这里大致只说三个东西,resolve, reject,Promise.all 对应成功执行,失败执行,返回全部状态,实例贴代码 很容易理解。

    const promist = new Promise((resolve, reject) => {
    this.$http.jsonp(getRegionNameByIdApi, {params: {regionId: dqarr}}).then((res) => {
    this.dqarr = res.body.data
    resolve(res.body.data)
    }, (err) => {
    console.log(err)
    })
    })
    const promist1 = new Promise((resolve, reject) => {
    this.$http.jsonp(getPartnerNameByIdApi, {params: {partnerId: sharr}}).then((res) => {
    this.sharr = res.body.data
    resolve(res.body.data)
    }, (err) => {
    console.log(err)
    })
    })
    Promise.all([promist, promist1]).then((resultList) => {
    console.log('results:', resultList)
    resultList[0].map((item) => {
    this.tableData.map((val) => {
    if (item.regionId === val.regionId) {
    val.region_name = item.regionName
    }
    if (item.regionId === val.areaId) {
    val.area_name = item.regionName
    }
    if (item.regionId === val.shopId) {
    val.shopName = item.regionName
    }
    if (resultList[1][val.partnerId]) {
    val.partner_name = resultList[1][val.partnerId]
    }
    })
    })
    this.$set(this.tableData, this.tableData)
    })
    创建promis和promist1并赋值一个Promise返回结果,在new一个新的Promise中 resolve代表成功要执行的方法,传入异步响应的数据,这个新的Promise最后将返回一个数组 最后Promise.all传入两个参数,注意Promise.all只能传入一个数组,在数组中放promis和promis1,在then中同样返回一个数组,对应promis和promis1成功响应的数据
    ---------------------
    作者:wzzehui
    来源:CSDN
    原文:https://blog.csdn.net/wzzehui/article/details/81179921
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    erlang遍历目录
    C/C++ makefile自动生成工具(comake2,autotools,linux),希望能为开源做点微薄的贡献!
    shell 文件操作
    互联网分享知识(一)
    分页查询,你真的懂吗?
    awk神器
    Unicode编码解码在线转换工具
    awk 留底
    软件开发真的这么简单吗?
    php性能优化
  • 原文地址:https://www.cnblogs.com/limengyao/p/10254472.html
Copyright © 2011-2022 走看看