promise

就是一种异步编程的的解决方案

当执行网络请求的时候,代码就会出现阻塞,下面的代码要等待请求完成了在运行,所以我们一般网络请求的时候就去开启一个异步任务,一边请求一边执行其他代码

请求到数据后,就要一个回调函数,返回数据

这只是简单的场景,如果在很复杂的情景里就会出现回调地狱。。。。。。

为了解决这个问就有了Promise,很优雅的就可以解决问题,调用请求和数据的处理放在不同的 位置上

 new Promise((resolve, reject) => {
setTimeout(() => { //延时函数模拟请求
resolve()
}, 1000)
}).then(() => {
console.log(111); //模拟处理数据
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve() 通过数据再请求
})
})
}).then(() => {
//再处理拿到的数据
console.log(222); })

这就是链式编程  一条链处理一条链的事情

Promise 有三个状态

1 pending 等待   正在请求

2. fulfill 满足   调用 resolve

3.reject  拒绝状态  调用 reject

写法

通过源码

我们可以看到 then 可以传 两个函数 一个 是fulfill ,一个reject  ,就是说 在then中可以这样写

.then(res => {
console.log(222);
}, err => {
console.log(err);
})

这样catch就可以不用写在then后面 直接写在then里面

Promise 链式调用

new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Hello World')
}, 1000)
}).then(res => {
console.log(res);
return Promise.resolve(res + '11')
}).then(res => {
return Promise.resolve(res + '22')
}).then(res => {
return Promise.resolve(res + '22')
}).then(res => {
return Promise.resolve(res + '22')
}).then(res => {
return Promise.resolve(res + '22')
}).then(res => {
return Promise.resolve(res + '22')
}).then(res => {
return Promise.resolve(res + '22')
})

调用 时可以直接写这样

以前的这样太过于麻烦

return new Promise((resolve, reject) => {
setTimeout(() => {
resolve() 通过数据再请求
})
})

还可以这样写

直接return res +‘ 222’

直呼 程序‘偷懒’真是个好习惯 :)

如果 有两个请求 同时需要

这里即有一个函数Promise.all([])

  Promise.all([
new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ name: 'kobe', age: 18 })
}, 1000);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve({ name: 'kobe', age: 18 })
}, 1000);
})
]).then(res => {
console.log(res);
}).catch(err => {
console.log(err);
})

Vue-Promise的更多相关文章

  1. Vue:Promise概要

    1.Promise中then是异步的 2.Promise 的then里面两个回调,默认第一个resolve,第二个reject:不会进入catch:如果只有一个回调则进入catch var p1=ne ...

  2. Vue iview Tree组件实现文件目录-基础实现

    注册页面路由 router/router.js { path: 'folder_tree', name: 'folderTree', component: () => import('@/vie ...

  3. Vue2开发大全

    参考资料: vuex element qs.js axios.js vue promise 关于ES6的Promise的使用深入理解  vue2 设置网页title的问题 Mint UI websto ...

  4. 一些自己常用的cdn

    1.vue <script src="http://cdn.bootcss.com/vue/1.0.28-csp/vue.js"></script> < ...

  5. 简述前后端项目RSA+AES加解密

    一.登录机制 在项目中,我们可以大致得出一个登录的过程,主要分为  登录验证.登录保持.退出三个部分.登录验证是指客户端提供用户名和密码,向服务器提出登录请求,服务器判断客户端是否可以登录并向客户端确 ...

  6. 速查列表:Apache SkyWalking OAL 的 域(Scopes)

    OAL简介 在流模式(Streaming mode)下,SkyWalking 提供了 观测分析语言(Observability Analysis Language,OAL) 来分析流入的数据. OAL ...

  7. Vue : Expected the Promise rejection reason to be an Error

    在vue项目中添加ESLint,new 一个 Promise 一直显示错误 :Expected the Promise rejection reason to be an Error 正常来说new ...

  8. vue 坑之 vuex requires a Promise polyfill in this browser

    android内嵌H5页面不显示出现这个问题,原因有很多 首先,别急,请看下面的推荐方案: 1.找个Android真机测试下(机型版本为4.4以上),真机联调测试 Android 只需要四个步骤: 1 ...

  9. vue结合Promise及async实现高效开发。

    在vue中平时的开发中我们应该都会遇到promise函数,比如我们常用的axios,resource这都是用来做http请求的插件. 在平时的开发里,关于axios我们可能是这样写的 import a ...

  10. vue中promise的使用

    vue中promise的使用 promise是处理异步的利器,在之前的文章<ES6之promise>中,我详细介绍了promise的使用, 在文章<js动画实现&&回 ...

随机推荐

  1. 自定义组件开发:使用v-model封装el-pagination组件

    1.前言 通过封装el-pagination组件开发自定义分页组件的类似文章网上已经有很多了,但看了一圈,总是不如意,于是决定还是自己动手搞一个. 2.背景 2.1.常规分页处理方法 利用el-pag ...

  2. hive学习笔记之十:用户自定义聚合函数(UDAF)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<hive学习笔记>的第十 ...

  3. AcWing 903. 昂贵的聘礼

    年轻的探险家来到了一个印第安部落里. 在那里他和酋长的女儿相爱了,于是便向酋长去求亲. 酋长要他用10000个金币作为聘礼才答应把女儿嫁给他. 探险家拿不出这么多金币,便请求酋长降低要求. 酋长说:& ...

  4. Jenkins 进阶篇 - 权限配置

    Jenkins的授权策略 Jenkins 默认的授权策略是[登录用户可以做任何事],也就是人人都是管理员,可以修改所有的设置以及构建所有的任务,不用做任何设置,有账号登录到 Jenkins 系统即可, ...

  5. Spring 依赖注入(DI) 的三种方式 和 对集合类型的注入

    // 分别省略了getter setter public class Student { private String name; private int age; private Teacher t ...

  6. Linux SecureCRT 终端连接密钥交换失败错误

    1.故障现象: 服务器升级OpenSSH和OpenSSL后,SecureCRT无法SSH登录(CRT7.0以上版本可以正常登陆,以下版本报截图错误),但是Putty等工具可以正常登录: 报错如下: S ...

  7. 【路径规划】 Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame (附python代码实例)

    参考与前言 2010年,论文 Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame 地址:https ...

  8. 常见最基础的Dos命令.

    打开cmd的方式. 1.+系统+命令提示符 2.Win+R 输入cmd 打开命令台 (推荐使用) 3.在任意的文件夹下按住SHIFT 加鼠标右键 在此处打开命令行窗口 4.资源管理器的地址栏前面加上 ...

  9. 五个 .NET 性能小贴士

    原文:bit.ly/3wSpO4o 作者:Nikita Starichenko 翻译:精致码农 大家好!今天我想和大家分享几个 .NET 的性能小贴士与基准测试. 我的系统环境: BenchmarkD ...

  10. Linux day2 随堂笔记

    计算机的硬件组成 主机.输入设备.输出设备 一.运维人员的核心职责 1. 企业数据安全 2. 企业业务724运行(不宕机) 3. 企业业务服务率高(用户体验好) 4. 运维人员的工作内容 日常服务器维 ...