在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实现高效开发。的更多相关文章

  1. Node.js 101(2): Promise and async

    --原文地址:http://blog.chrisyip.im/nodejs-101-package-promise-and-async 先回想一下 Sagase 的项目结构: lib/ cli.js ...

  2. vue 钩子函数 使用async await

    示例: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...

  3. 20分钟带你掌握JavaScript Promise和 Async/Await

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.freecodecamp.org/news/learn-promise-a ...

  4. Promise和async await详解

    本文转载自Promise和async await详解 Promise 状态 pending: 初始状态, 非 fulfilled 或 rejected. fulfilled: 成功的操作. rejec ...

  5. CSS高效开发实战:CSS 3、LESS、SASS、Bootstrap、Foundation --读书笔记(1)设定背景图

    技术的新发展,除计算机可以接入互联网之外,平板电脑.智能手机.智能电视等其他设备均可访问互联网.在多设备时代,构建多屏体验也不是听说的那么难. 但是这也增加了学习CSS的难度?不知道如何上手,只懂一点 ...

  6. .Net 高效开发之不可错过的实用工具(转)

    .Net 高效开发之不可错过的实用工具(转) 本文摘自: http://www.cnblogs.com/powertoolsteam/p/5240908.html#3372237 Visual Stu ...

  7. Android APP高效开发的十大建议

    在使用Android开发APP过程中,为什么确保最优化.运行流畅且不会使Android系统出现问题至关重要呢?因为影响APP产品效率的每一个问题,如:耗电或内存占用情况等,都是关乎APP成功与否关键因 ...

  8. WPF Multi-Touch 开发:高效开发模式

    原文 WPF Multi-Touch 开发:高效开发模式 在前几篇文章中已经介绍了触屏操作的多种模式,并对其开发方式也有了进一步了解.细心的朋友应该会发现在上一篇文章中,如果拖动图片过快它会因惯性效果 ...

  9. Net 高效开发

    Net 高效开发之不可错过的实用工具   工欲善其事,必先利其器,没有好的工具,怎么能高效的开发出高质量的代码呢?本文为各ASP.NET 开发者介绍一些高效实用的工具,涉及SQL 管理,VS插件,内存 ...

随机推荐

  1. 最简单的flask表单登录

    from flask import Flask from flask import request app = Flask(__name__) @app.route('/', methods=['GE ...

  2. mysql select 1

    看数据库连接池源码,发现连接池的参数validationQuery(SQL查询,用来验证从连接池取出的连接)设置的值为"SELECT 1",之前很少用这种写法,于是 google一 ...

  3. MYSQL复习笔记7-索引

    Date: 20140207Auth: Jin 索引是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表. 索引的主要作用 快速存取数据 保证数据记录的唯一性 实现表与表之间的参照完整 ...

  4. 兼容IE8

    由于IE8不支持HTML5,而它又是Win7的默认浏览器,我们即使讨厌它,在这几年却也拿它没办法. 最近做了个需要兼容IE8的项目,不可避免地用了HTML5+CSS3,甚至canvas和svg,做兼容 ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)(转)

    1.前言 在上一篇的内容里我们介绍了基于Android Studio构建ArcGIS Runtime SDK for Android开发环境的基本流程,流程中我们采用的是基于Gradle的构建方式,在 ...

  6. Linux下的基础命令

    在容器环境中很多时候要确定底层操作系统是什么和什么版本,网上找了一把,发现了一些比较有用的命令,从其他地方转过来,参考 # uname -a # 查看内核/操作系统/CPU信息 # head -n / ...

  7. 【Todo】机器学习系列

    看了这篇文章很好,有很多指导性思想: http://www.cnblogs.com/tornadomeet/p/3395593.html 另外这个人的系列文章里面也有很多干货. 就看这个系列的吧: h ...

  8. TensorFlow------读取CSV文件实例

    TensorFlow之读取CSV文件实例: import tensorflow as tf import os def csvread(filelist): ''' 读取CSV文件 :param fi ...

  9. http://www.cnblogs.com/CBDoctor/p/4459750.html

    http://www.cnblogs.com/CBDoctor/p/4459750.html

  10. RocketMQ概念整理

    DefaultMessageStore 消息的存储和提取. 相对重要的两个方法: 消息存储 PutMessageResult putMessage(MessageExtBrokerInner msg) ...