promise解决多层异步调用

使用Promise解决多层异步调用的简单学习 Promise是个什么东西 Promise解决的问题 考虑如下场景,函数延时2秒之后打印一行日志,再延时3秒打印一行日志,再延时4秒打印一行日志,这在其他的编程语言当中是非常简单的事情,但是到了js里面就比较费劲,代码大约会写成下面的样子: var myfunc = function() { setTimeout(function() { console 阅读详情

日常开发中,我们通常会遇到接口异步请求存在多层依赖的关系,需要多层嵌套异步接口请求,可以通过promise来解决问题

  1. 封装单个请求
func1(data) {
  return this.$axios.get('/xxx/xxxx/xxpatha', {
          params: {
            a: data
          }
     })
     .then(res => {
          return Promise.resolve(res.bean)
     })
}
func2(data) {
  return this.$axios.get('/xxx/xxxx/xxpathb', {
          params: {
            b: data
          }
     })
     .then(res => {
          return Promise.resolve(res.bean)
     })
}
func3(data) {
  return this.$axios.get('/xxx/xxxx/xxpathc', {
          params: {
            c: data
          }
     })
     .then(res => {
          return Promise.resolve(res.bean)
     })
}
  1. 嵌套使用
func1('test').then(data1 => {
    //...操作
    func2.then(data2 => {
        //...操作
        func3.then(data3 => {
            //...操作
        })
    })
})

可按照具体情况调整嵌套层数

基于TAF框架的Future/promise异步调用 使用callback是能有效的达成异步不错,但是当业务变得庞大时,很多地方我们都要使用到异步调用。但如果异步调用嵌套多次,或者调用之间的依赖关系复杂的话,难免代码会变得混乱不堪。举个例子,假设我们需要依次调用服务A、B、C、D,我们就不得不把调用下一个接口的代码写在上一个接口的回调函数中。 这时,future/promise的异步调用方式就应运而生了,采用这种方式我们定义回调函数中完成当前回调逻辑... 阅读详情

相关推荐

Promise与async/await的区别

Promise与async/await的区别

weixin_72254828的博客 573

vue promise then多级嵌套

[size=medium][color=green][b]和上一篇类似的需求, 目前我有一个需求是: 通过getFormNames得到了一个大集合A,在循环遍历A集合的每一条数据A1,A2。。。。以此类推,拿到A1作为参数,又会获得一个新集合,最终是把返回的结果拼装改造下返回一个新的response function getForms(){ getFormNames().the...

蓝花花的天空 7570

异步调用future/promise模式(C++版本)

Future/Promise 编程模式 如何减少服务器应答时间,如何更强地进行并发。异步调用的Future/Promise1模式就是实现这一目的的手段之一。 一个 Future 就是说“将来”你需要某些东西(一般就是一个网络请求的结果),但是你现在就要发起这样的请求,并且这个请求会异步执行。或者换一个说法,你需要在后台执行一个异步请求。 C++中的应用 C++11创建了线程以后,我们不能直接从th...

Mr.Phoebe的专栏 2033

Promise 多层嵌套运用

let getPosition= () => { return new Promise((resolve, reject) => { setTimeout(() => { resolve(); }, 2000); }).then(() => { return new Promise((resolve, reject) => ..

ZengYue_D的博客 2827

Promise对象的链式调用(解决异步回调嵌套)

Promise对象是解决异步回调嵌套的一种方案,现在封装Promise的库很多、像q,bluebrid等等。Promise对象下调用.then方法就可以把异步排个顺序,那么只要返回Promise对象、.then就可以继续下去 首先我们定义三个异步方法 var test ={         func1:function(){                 var data = new Promise(function(resolve){                         setTimeout(function(){                                

使用Promise解决多层异步调用的简单学习心得

前言 第一次接触到Promise这个东西,是2012年微软发布Windows8操作系统后抱着作死好奇的心态研究用html5写Metro应用的时候。当时配合html5提供的WinJS库里面的异步接口全都是Promise形式,这对那时候刚刚毕业一点javascript基础都没有的我而言简直就是天书。我当时想的是,微软又在脑洞大开的瞎捣鼓了。 结果没想到,到了2015年,Promise居然写进ES6标准里面了。而且一项调查显示,js程序员们用这玩意用的还挺high。 讽刺的是,作为早在2012年就在Metro应用开发接口里面广泛使用Promise的微软,其自家浏览器IE直到2015年寿终正寝了都还不

JS异步请求多层嵌套解决方案-Promise对象的使用

Promise对象 Promsise是ES6中对于原生异步操作的解决方案,为异步操作提供统一的接口,可以让异步操作代码写起来像写同步操作的流程的代码一样,不用一层层的去嵌套 // 传统写法 step1(function (value1) { //异步代码1 step2(value1, function(value2) { //异步代码2 step3(value2, function(value3) { //异步代码3 step4(value3, function(v

华少哥的博客 3389

SAP VC实战:用CU01和CS02搞定BOM里的‘智能’对象相关性(附语法避坑指南)

在工业制造领域,产品配置的复杂性往往超出想象。想象一下,当客户需要定制一台工业设备时,可能有数百种配置选项相互影响——从基础材质到动力系统,从控制模块到安全装置。如何在SAP系统中优雅地管理这种复杂性?对象相关性(Object Dependencies)就是解决这一挑战的利器。

weixin_42524824的博客 467

使用Promise解决多层异步调用的简单学习【转】

前言 本文章转载文章: https://www.jianshu.com/p/29da9aef4c1c 第一次接触到Promise这个东西,是2012年微软发布Windows8操作系统后抱着作死好奇的心态研究用html5写Metro应用的时候。当时配合html5提供的WinJS库里面的异步接口全都是Promise形式,这对那时候刚刚毕业一点javascript基础都没有的我而言...

weixin_30481087的博客 145

BACnet/IP BBMD跨网段通信深度解析与最佳实践

本文介绍了在BACnet/IP网络中通过BBMD实现跨子网设备通信的关键配置方法。重点阐述了广播分发表(BDT)中掩码设置的重要性:使用子网掩码(255.255.255.0)会导致路由器拦截广播消息,而必须采用主机掩码(255.255.255.255)才能启用单播隧道机制,使BACnet广播消息封装为可路由的单播UDP包。文章详细说明了BDT条目的正确配置格式、BIP广播地址的作用,并提供了验证步骤,强调在跨网段场景中,正确设置掩码是确保设备发现和通信成功的关键因素。

零一架构师的专栏 1536

QGIS v3.28 高效加载OSM在线地图的三种实用方法

本文详细介绍了在QGIS v3.28中高效加载OSM在线地图的三种实用方法:通过XYZ Tiles直接连接、使用QuickMapServices插件以及配置WMS/WTMS服务。针对每种方法提供了具体操作步骤、常见问题解决方案和性能优化建议,帮助用户根据需求选择最适合的方案,提升GIS工作效率。

weixin_29233333的博客 433

Promise用法

Promise作用 Promise是异步编程的一种解决方案,从语法上讲,Promise是一个对象,从它可以获取异步操作的满息。 可以避免多层异步调用嵌套问题(回调地狱) 下面的嵌套函数是不是看出来非常的复杂,但是使用Promise我们可以简化 $.ajax({ url: 'http://localhost:3000/data', success: function(data) { console.log(data) $.ajax({ url:

qq_41309350的博客 266

综合能源系统多时间尺度优化调度!诸多创新点让你抓住审稿人的心!

主要介绍综合能源系统的设备组成结构,并针对屋顶光伏系统、冷-热-电联供系统中的燃气轮机、燃气锅炉、光伏溴化锂制冷机、卡琳娜余热发电、中央空调系统,以及外网交互系统的配电网与天然气管网交互关系进行数学建模。1) 源-荷-储协同调度:研究屋顶光伏、燃气轮机、燃气锅炉等源侧设备,中央空调、电-热-冷负荷、可平移电负荷、可削减温控负荷等负荷侧资源,以及储能系统、电动汽车等储能侧设备的协同调度,以提高风光消纳能力,满足社会能源需求。通过电转热、电转冷、电转气等多能耦合方式,可进一步促进可再生能源的应用与发展。

weixin_48747334的博客 1488

Promise 入门

promise入门笔记 前言 JS是一个单线程语言,它的异步机制主要有以下三大类: 定时器:setTimeout、setInterval 接口调用:Ajax、Promise、Fetch、Axios 事件函数(onClick) 在实际项目中,我们常常会遇到多次异步调用的情况,但多次异步调用的顺序会有问题 多次调用的结果,顺序可能不同步 异步调用的结果,如果存在依赖,则需要用回调函数进行嵌套,由此容易出现“回调地狱”的问题。 为什么需要Promise 回调地狱 简单说明就是:3个请求(异步),请求3依赖

weixin_46235143的博客 169

OAI数据集申请下载全攻略:从个人NDA账号注册到数据包下载的保姆级避坑指南

本文提供OAI数据集申请下载的完整指南,涵盖从个人NDA账号注册到数据包下载的全流程。重点解析login.gov验证陷阱、浏览器兼容性问题、NDA权限申请技巧及nda-tools高效使用方法,帮助医学影像研究者避开常见技术障碍,快速获取全球骨关节炎研究数据库OAI的宝贵数据资源。

weixin_28698059的博客 748

实战指南:如何优雅解决SpringBoot3与Mybatis-Plus的版本兼容性问题

本文深入解析SpringBoot3与Mybatis-Plus的版本兼容性问题,提供实战解决方案。通过Maven依赖排除策略、Gradle配置方案及自动配置覆盖策略,有效解决包冲突和初始化顺序问题,确保项目平稳升级。适用于开发者快速解决SpringBoot3与Mybatis-Plus的集成难题。

weixin_28432777的博客 597

vue前端交互

前后端交互模式: 认识promise:是异步编程的一种解决方案。 1.可以避免多层异步调用嵌套问题 2.promis对象提供简洁的api,使得控制异步操作更容易 <script type="text/javascript"> /* Promise基本使用 */ // console.log(typeof Promise) //console....

zzzzzz9527的博客 204

双有源桥变换器(DAB)TPS控制:从理论建模到Simulink/PSIM仿真实践

本文深入探讨了双有源桥变换器(DAB)的三重移相(TPS)控制技术,从理论建模到仿真实现。文章详细分析了TPS相比SPS和DPS的优势,阐述了其12种工况的划分逻辑与电流应力最优调制策略,并提供了在Simulink和PSIM平台搭建仿真模型的详细步骤与实战经验,帮助工程师掌握这一高效控制方法。

white的博客 584

异步调用及promise基本用法

1.promise用法 1.1 异步调用 1.1.1 异步效果分析 ①定时任务 ②Ajax ③事件函数 1.1.2 多次异步调用的依赖分析 多次异步调用的结果顺序不确定 异步调用结果如果存在依赖需要,要用嵌套 1.2 promise概述 promise是异步编程的一种解决方案,从语法上来讲,Promise是一个对象,从它可以获取异步操作的消息。 使用Promise主要有以下好处: 可以避免多层异步调用嵌套问题(回调地狱) Promise对象提供了简洁的API,使得控制异步操作更容易 Promis

weixin_45630345的博客 699

Open3D 进阶(32)渐进三角网(PTD)地面滤波

渐进三角网地面滤波算法(Progressive TIN Densification, PTD)是一种广泛应用于机载LiDAR点云数据处理的滤波方法,旨在从复杂场景中精确分离地面点,以生成数字高程模型(DEM)。

点云侠的博客 1533

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

angular promise $q 异步调用

Angular异步调用 Promise和$q的用法 背景 首先说明一下promise异步调用出现的背景:javascript语言是一种单线程模式,就是说一次只能够执行一个任务,如果有多个任务的话就必须排队,后面的任务要等待前面的任务完成之后才能进行下一个任务。这种单线程模式容易造成阻塞,因为如果队列中的某一个任务耗时长,后面的任务都无法快速执行,页面很容易卡在某一个状态...

dhxiyzqv45340的博客 205

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

javascript-前后端交互-异步调用Ajax与Promise比较

javascript-前后端交互-异步调用Ajax与Promise比较 目录 文章目录1、异步调用1.1、使用场景1.2、Ajax使用1.2.1、启动后台1.2.2、编写前端测试页面1.3、多次异步调用的依赖分析2、Promise简介***后记*** : 内容 1、异步调用 1.1、使用场景 定时任务 Ajax 时间函数 1.2、Ajax使用 1.2.1、启动后台 这里我们使用基于nodojs的express简单搭建一个后台环境,使用nodemon热部署前端项目。 简单的index.js代

gaogzhen的博客 1242

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Promise异步调用

//删除图片 handleRemove(file, fileList) { console.log(file) //调用服务端去删除课程图片信息,如果返回false,前端停止删除 //异步调用 return new Promise((resolve,rejct)=>{ courseApi.de...

江黎 203

promise和callback在微信小程序异步调用中的应用

本博客所有文章采用的授权方式为 自由转载-非商用-非衍生-保持署名 ,转载请务必注明出处,谢谢。 声明: 本博客欢迎转发,但请注明出处,保留原作者信息 博客地址:孟阿龙的博客 所有内容为本人学习、研究、总结。如有雷同,实属荣幸 背景 近期,因为工作需要在研究微信小程序。 微信小程序基本是通过Javascript+css+wxml(类html)组合而成。对于精通前端技术的人来说,javascr...

mengalong的博客 4711

利用Promise的then链解决异步调用使之按顺序执行

利用Promise的then链解决获取数据时候的异步 一、概述产生问题原因 我们在调用接口数据的时候有时候需要涉及到顺序的问题,或者这边的接口赋值完全之后再去执行什么方法,如果我们获取数据的方式是异步的,那这时候就需要我们进行处理使之同步执行,即挨个执行。怎么使本来是异步执行的变成按照顺序的同步执行呢? 二、解决方式 :Promise的then链 1、Promise的简介 我们知道,promise是es6提供的一个对象,不受外界的影响。Promise对象代表一个异步操作,有三种状态: pending:

qq_38110274的博客 4573
上一篇: promise解决重复调用同一接口(同步)
下一篇: 前端手机号脱敏和分隔
codezha
博客等级 码龄10年 28粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值