范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

VUE异步函数return问题解决方案

  异步函数return问题:
  在写VUE前端代码时,会遇到将带有return结果的异步请求函数(如请求后台数据)设置为公共函数,在其他地方调用的场景。但是因为是异步请求数据,实际需要return的值在调用返回时,还未生成,所以导致return的内容为undefined。(见参考[1]的分析)
  例如:公共函数和调用方式//公共函数:根据异步返回的内容确定return值true或false function a(){ 		api({        url: "/xxx/xxxx",     //后端异步请求     	 method: "get", 		}).then((retData) => { 				if(retData.list.length > 0){         	  return true;         }else{           	return false;         } 		}) }  //调用位置 checkData(){   	var result = a(); 		//result值为undefined!! }
  调用返回时,因为异步请求还未结束,真正的结果还没有获取到,所以以上代码调用位置result得到的返回值为"undefined"。
  解决方案:通过Promise + async/await实现异步return调用//公共函数:根据异步返回的内容确定return值true或false function a(){   return new Promise((resolve,reject)=>{         api({            url: "/xxx/xxxx",     //后端异步请求            method: "get",         }).then((retData) => {             if(retData.list.length > 0){                 resolve(true);             }else{                 resolve(false);             }         })     }) }  //调用位置 async checkData(){   	var result = await a(); 		//result值为期望的true或false }
  2. 通过回调函数实现异步return调用//公共函数:根据异步返回的内容确定return值true或false function a(func){ 		api({        url: "/xxx/xxxx",     //后端异步请求     	 method: "get", 		}).then((retData) => { 				if(retData.list.length > 0){         	  if(typeof func === "function"){                func(true);             }         }else{           	if(typeof func === "function"){                func(false);             }         } 		}) }  //调用位置 checkData(){   	var result;     a(function(ret){       result = ret;			//result值为期望的true或false     });  }
  如果在回调函数里面将return返回值赋值给全局变量this.xxx,不能直接this.xxx = ret,需要将this作为变量来引用(参考[2]说明),方法如下:data() {     return {        result: true;     }; } methods:{   checkData(){       a(function(ret){          this.result = ret;       //这里报错:Uncaught (in promise) TypeError: Cannot read properties of undefined       }); 	   },   checkData2(){      var this_alias = this;       a(function(ret){          this_alias.result = ret;     //正确的写法       }); 	   } }
  参考:
  [1] vue中函数为什么不能在异步操作里return出数据_PC_136的博客-CSDN博客_vue异步return
  [2] JS中this的指向问题(Uncaught (in promise) TypeError: Cannot read property ‘$router‘ of undefined)_whitek387的博客-CSDN博客

盖茨为什么会成为世界首富?说到比尔盖茨的财富,很多人可能首先想到的是比尔盖茨精明的投资,因为这些年他通过跟巴菲特学投资,光靠投资就带来了超过700亿美元的财富,而微软所带来的财富只占其总财富的18左右。但我极米newz6x投影仪一个月深度体验评测作为工作的租房党,对拥有一台大屏观影设备种草已久,电视现在其实已经白菜价了,但是考虑到搬家等因素,所以买了投影仪结合这些天几乎每天都在用的使用体验,分享给xdm1投影效果晚上关灯使天玑90002K柔性屏OIS防抖,比OPPO便宜2800元,热销120W旗舰机有消息称,vivoiQOO10Pro高端机将搭载天玑9000处理器,按照该系列高端机的定价,基本是5000元机型,这样一来又拉高了天玑9000的价格,首款搭载的是OPPOFindXAce系列手机曝光,或隶属于一加品牌,还会是曾经的那个Ace手机吗据网络爆料大神数码闲聊站爆料,一加有一款搭载天玑8100的新机就是一加Ace系列。是的,就是曾经OPPOAce的那个Ace。依旧主打快充和游戏,所以堆了150W超级闪充天玑8100荣耀Magic系列发布一起来看看这次荣耀的产品吧第一款荣耀Magic4荣耀Magic4这款手机采用6。81英寸的双曲屏幕,超窄边框,支持120HZ自适应刷新率和1920HZ高频PWM调光,10。7亿色彩显示,DCIP3广色域。前C之门课程系列28串口通信在。NET平台下创建C串口通信程序,。NET2。0提供了串口通信的功能,其命名空间是System。IO。Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备小身材大音量高颜值SanagX6S蓝牙音箱SANAG无线蓝牙音箱大音量159购买其实对于女生来说,音箱的材质音质性能参数这些,基本上入不了女生的眼。颜值才是最重要的。所以说,男生给女生挑选礼物时,一定要挑选好看的礼物,这一通过使用guavaretrying实现灵活的重试机制概述本文将介绍guavaretrying是什么,有什么用,以及如何在项目中合理运用。guavaretrying是一个线程安全的Java重试类库,提供了一种通用方法去处理任意需要重试华为Mate50不用自家麒麟芯片,改用骁龙?华为Mate50系列之前爆料出中央处理器要么使用自家麒麟90004G版芯片,要么使用高通骁龙8Gen14G版芯片,但是最后使用哪一家我们不得而知,根据最新消息来看,华为Mate50华为Mate50Pro曝光首发鸿蒙3。0系统,或搭载骁龙8Gen14G芯片日前,网上有关华为Mate50Pro的爆料越来越多,也成为近期手机板块的一大热议话题,借此机会,小编也整理了部分有关华为Mate50Pro的信息供大家参考讨论,一起来看看吧。小编了即日起,排查中央网信办等开展专项行动整治算法滥用乱象记者8日从中央网信办获悉,中央网信办牵头开展清朗2022年算法综合治理专项行动,即日起至2022年12月初,将深入排查整改互联网企业平台算法
区块链技术分享初步应用2区块链技术分享起源1简单分享了比特币的起源。既然比特币可以脱离物理介质,仅通过互联网就可以流通,那么比特币到底存在哪?比特币是怎么交易的?区块链到底是什么?今天这篇文章将一一进行解新基建提了三年,谈起区块链你竟然只知道比特币今天跟大家分享新基建与区块链。01区块链有多受重视党的十九大以来,中共中央政治局已进行19次集体学习,其中三次与数字经济相关,主题分别是大数据人工智能和区块链,区块链的地位被提的最酷睿i912900KROGZ690EXTREME首测重返战力之巅文章开头不妨先说结论1Corei912900K提升非常大,部分场景对比10900K提升能超过502Corei512600K性能已经与10900K持平,甚至略优3最高功耗是给时刻保持区块链技术之哈希指针hello,大家好,我们第三期的区块链技术分享来啦,那么话不多说,我们开始吧。提起区块链,大家可能都会提到不可篡改。但是为什么区块链不可篡改呢?先给出答案,这与区块链的数据结构哈希12代酷睿正式发布Corei912900K拉满5。2GHz,DDR5PCIe5。0齐发就在今天,英特尔正式发布第12代酷睿系列处理器,首发非锁频CPU包括酷睿i912900KKF酷睿i712700KKF酷睿i512600KKF。对于12代酷睿,英特尔做了数个总结,可为什么有的网址开头是https,有的却是http?hello,大家好,我们第二期的区块链技术分享来啦,本期是candy分享公钥加密,也就是非对称加密。提到加解密,密码学这些词汇,很多人都退避三舍,如临大敌,觉得晦涩难懂,自己不想懂区块链复盘及规划hello,大家好,好久不见分享区块链有一段时间了,也有近两周没有更新了。确实遇到了点小瓶颈,因为越研究越发现区块链涉及的技术领域很广,很多东西想讲清楚非一时之功,所以自己也有些困英特尔AI顾问穿越星际守护宇航员健康近日,英特尔人工智能(AI)顾问与前沿开发实验室(FDL)的研究人员进行了一项关乎宇航员健康的具有里程碑意义的研究,以便更好地了解辐射暴露对宇航员的生理影响。利用英特尔的人工智能技区块链技术分享起源1现下区块链大火,聊到相关话题,我们常常的反应年轻人怎么可能轻易认输呢?所以,我们打算写一系列文章揭开区块链的神秘面纱。提到区块链,常常会谈到一个高频词比特币。说到比特币,有个神秘的12代酷睿战斗力顶梁柱ROGMAXIMUSZ690EXTREME登场在性能尚未解禁之前,玩家们对新一代酷睿的战斗力所有猜测,有许多是来自于ROGMAXIMUS平台运行时的曝光。无疑作为主板选择中的金字塔级产品,ROGMAXIMUS几乎坐稳了不可动摇英特尔加速高性能计算技术创新以XPU架构引领E级计算时代2021CCF全国高性能计算学术年会(HPCChina2021)于今日正式拉开帷幕。此次会议期间,英特尔及其合作伙伴就如何通过高性能计算应对当今世界的重大挑战展开探讨,并展现了英特