vue结合Promise及async实现高效开发。
在vue中平时的开发中我们应该都会遇到promise函数,比如我们常用的axios,resource这都是用来做http请求的插件。
在平时的开发里,关于axios我们可能是这样写的
import axios from 'axios'
const get=()=>{
axios.get(url,params).then(()=>{正确的回掉}).catch(()=>{错误回调})
}
这里其实还是比较麻烦的我们需要写then()/catch()。为了可以节省这两个函数的调用我们就可以这样玩。
import axios from 'axios'
const async get=()=>{
const data = await axios.get(url,params)
console.log(data) // data 等于 then 的回调的返回值
}
但是又会有同学说我又想监听错误的数据怎么办呢。(其实我在做开发的时候我们并不需要去在请求接口的时候做错误的处理,这样的情况很少,我们一般都会在axios的拦截器去处理这些错误的问题。)
import axios from 'axios'
const async get=()=>{
try { // 所有 pormise 的正确都会走这里面
const data = await axios.get(url,params)
console.log(data) // data 等于 then 的回调的返回值
}catch (e) { // 错误走这里面 e 是错误信息
}
}
这种方法呢我平时其实很少会用到,我想后台的小伙伴应该会用的更多。
在开发的时候还会遇到一个问题,比如我有一个数组我需要循环进行匹配然后把匹配到的值给返回出去。
const fn=(arry)=>{
arry.forEch((r,index)=>{
if(r===2){
return r
}
})
}
const arry=[1,2,3,4,5]
console.log(fn(arry)) // 这个值其实是空的
上面的做个 return 肯定是传不出来的,应为forEch本来就是一个函数,所以不管怎么return 都是不行的,那么这种情况我们怎么把它传出来呢。
const fn = (arry) => {
return new Promise(resolve => {
arry.forEch((r, index) => {
if (r === 2) {
resolve(r)
}
})
})
}
const arry = [1, 2, 3, 4, 5]
fn(arry).then(ary => {
console.log(ary) //
})
这样就只要你在Promise 函数里面 不管有多少层函数,不管在哪个位置 只要执行resolve 这个函数你就可以随时随地的 把值传出来
vue结合Promise及async实现高效开发。的更多相关文章
- Node.js 101(2): Promise and async
--原文地址:http://blog.chrisyip.im/nodejs-101-package-promise-and-async 先回想一下 Sagase 的项目结构: lib/ cli.js ...
- vue 钩子函数 使用async await
示例: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...
- 20分钟带你掌握JavaScript Promise和 Async/Await
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.freecodecamp.org/news/learn-promise-a ...
- Promise和async await详解
本文转载自Promise和async await详解 Promise 状态 pending: 初始状态, 非 fulfilled 或 rejected. fulfilled: 成功的操作. rejec ...
- CSS高效开发实战:CSS 3、LESS、SASS、Bootstrap、Foundation --读书笔记(1)设定背景图
技术的新发展,除计算机可以接入互联网之外,平板电脑.智能手机.智能电视等其他设备均可访问互联网.在多设备时代,构建多屏体验也不是听说的那么难. 但是这也增加了学习CSS的难度?不知道如何上手,只懂一点 ...
- .Net 高效开发之不可错过的实用工具(转)
.Net 高效开发之不可错过的实用工具(转) 本文摘自: http://www.cnblogs.com/powertoolsteam/p/5240908.html#3372237 Visual Stu ...
- Android APP高效开发的十大建议
在使用Android开发APP过程中,为什么确保最优化.运行流畅且不会使Android系统出现问题至关重要呢?因为影响APP产品效率的每一个问题,如:耗电或内存占用情况等,都是关乎APP成功与否关键因 ...
- WPF Multi-Touch 开发:高效开发模式
原文 WPF Multi-Touch 开发:高效开发模式 在前几篇文章中已经介绍了触屏操作的多种模式,并对其开发方式也有了进一步了解.细心的朋友应该会发现在上一篇文章中,如果拖动图片过快它会因惯性效果 ...
- Net 高效开发
Net 高效开发之不可错过的实用工具 工欲善其事,必先利其器,没有好的工具,怎么能高效的开发出高质量的代码呢?本文为各ASP.NET 开发者介绍一些高效实用的工具,涉及SQL 管理,VS插件,内存 ...
随机推荐
- 【树状数组】Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) C. DNA Evolution
题意跟某道我出的等差子序列求最值非常像…… 反正询问的长度只有10种,你就建立10批树状数组,每组的公差是确定的,首项不同. 然后询问的时候只需要枚举询问串的每一位,找找这一位对应哪棵树状数组即可. ...
- [百度之星2014资格赛] Disk Schedule 报告
Disk Schedule Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...
- JDK | JDK安装与环境变量配置
文章目录 写在前面 官网下载安装jdk jdk系统环境变量的配置 检验jdk是否配置成功 写在前面 JDK的全称是Java SE Development Kit,也就是Java 开发工具箱.SE表示标 ...
- atomic与nonatomic的区别
原子性(atomic):某操作具备整体性,也就是说,系统其他部分无法观察到其中间步骤所生成的临时结果,而只能看到操作前与操作后的结果,那么就称改操作就是“原子的”(atomic),或者说,该操作具备“ ...
- 【JSTL】<c:if test=“”>没有else的解决方法
后台封装了一个对象 放在model里: model.addAttribute("notice", notice); notice是个对象 然后前台如果没有公告的话,希望显示暂无公告 ...
- 如何使用Less?
LESS是动态样式语言,赋予CSS动态语言的特性,如变量.继承.运算.函数,使得CSS更方便编写与维护.>>官网 less @color:#ff0000; body{color:@colo ...
- Hive技术拾遗
1. SELECT语句可以使用正则表达式做列选择,下面的语句查询除了ds和h 之外的所有列:SELECT `(ds|hr)?+.+` FROM sales 2. LEFT SEMI JOIN的限制是, ...
- java中各种数据类型占用字节数
1字节(Byte)=8bit java的基本类型 类型 所占字节 byte 1 short 2 int 4 long 8 float 4 double 8 char 2 String中字母和汉字所占字 ...
- iOS:ShareSDk的分享
使用分享类的SDK其实有很多,例如友盟.ShareSDK等等,参照他们的文档集成起来并不是很难,可能出的一些问题也就是配置文件的问题,这里我个人使用了ShareSDK分享,具体操作可出现的问题如下: ...
- SaltStack–Job管理
官方文档:https://docs.saltstack.com/en/2016.11/ref/modules/all/salt.modules.saltutil.html 在SaltStack里面执行 ...