Vue-Promise
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的更多相关文章
- Vue:Promise概要
1.Promise中then是异步的 2.Promise 的then里面两个回调,默认第一个resolve,第二个reject:不会进入catch:如果只有一个回调则进入catch var p1=ne ...
- Vue iview Tree组件实现文件目录-基础实现
注册页面路由 router/router.js { path: 'folder_tree', name: 'folderTree', component: () => import('@/vie ...
- Vue2开发大全
参考资料: vuex element qs.js axios.js vue promise 关于ES6的Promise的使用深入理解 vue2 设置网页title的问题 Mint UI websto ...
- 一些自己常用的cdn
1.vue <script src="http://cdn.bootcss.com/vue/1.0.28-csp/vue.js"></script> < ...
- 简述前后端项目RSA+AES加解密
一.登录机制 在项目中,我们可以大致得出一个登录的过程,主要分为 登录验证.登录保持.退出三个部分.登录验证是指客户端提供用户名和密码,向服务器提出登录请求,服务器判断客户端是否可以登录并向客户端确 ...
- 速查列表:Apache SkyWalking OAL 的 域(Scopes)
OAL简介 在流模式(Streaming mode)下,SkyWalking 提供了 观测分析语言(Observability Analysis Language,OAL) 来分析流入的数据. OAL ...
- Vue : Expected the Promise rejection reason to be an Error
在vue项目中添加ESLint,new 一个 Promise 一直显示错误 :Expected the Promise rejection reason to be an Error 正常来说new ...
- vue 坑之 vuex requires a Promise polyfill in this browser
android内嵌H5页面不显示出现这个问题,原因有很多 首先,别急,请看下面的推荐方案: 1.找个Android真机测试下(机型版本为4.4以上),真机联调测试 Android 只需要四个步骤: 1 ...
- vue结合Promise及async实现高效开发。
在vue中平时的开发中我们应该都会遇到promise函数,比如我们常用的axios,resource这都是用来做http请求的插件. 在平时的开发里,关于axios我们可能是这样写的 import a ...
- vue中promise的使用
vue中promise的使用 promise是处理异步的利器,在之前的文章<ES6之promise>中,我详细介绍了promise的使用, 在文章<js动画实现&&回 ...
随机推荐
- Custom Controller CollectionQT样式自定义 003 :Bubblemessage 气泡消息窗
效果Demo 思路大致上是加定时器,触发完成出现 - 停留 - 消失的效果. 源码:https://github.com/linzD00/CustomControllerLibrary
- oracle :如何测试数据库安装是否成功
要测试数据安装是否成功,可按顺序执行以下两个步骤: 测试步骤 1: 请执行操作系统级的命令: tnsping orcl (如果出现[TNS-03505:无法解析名称]的提示错误: 那就改为tnspi ...
- UI自动化学习笔记- Selenium元素等待(强制等待、显示等待、隐式等待)
一.元素等待 1. 元素等待 1.1 什么是元素等待 概念:在定位页面元素时如果未找到,会在指定时间内一直等待的过程 意思就是:等待指定元素已被加载出来之后,我们才去定位该元素,就不会出现定位失败的现 ...
- Cent OS下安装JDK11
自己云服务器以前装了个JDK1.7,最近发现出了jdk11,所以修改一下JDK版本: 我这里用的是Xshell和XFtp工具,下载地址:https://www.netsarang.com/downlo ...
- python使用笔记24--面向对象编程2
类方法 类里面自带的方法,不用实例化就可以调用,想象,模型上自带的功能 类方法是公共的,在实例方法里面可以随意调用 但是在类方法里不能调用实例方法,不能使用实例变量,但是他可以调用其他的类方法 1 @ ...
- TCP连接的11种状态
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议.TCP协议主要针对三次握手建立连接和四次挥手断开连接,其中包括了 ...
- Git错误:unable to access 'https://git.voicegu.com/qa/qa.git/': SSL certificate problem: unable to get local issuer certificate
fatal: unable to access 'https://git.voicegu.com/qa/qa.git/': SSL certificate problem: unable to get ...
- PXE高效批量网络装机
PXE高效批量网络装机 一.PXE概述 1)PXE (Preboot eXcution Environment) ...
- 【LeetCode】242. 有效的字母异位词
242. 有效的字母异位词 知识点:字符串:哈希表 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注意:若 s 和 t 中每个字符出现的次数都相同,则称 ...
- ES6 模块export import
在 ES6 前, 实现模块化使用的是 RequireJS 或者 seaJS(分别是基于 AMD 规范的模块化库, 和基于 CMD 规范的模块化库).ES6 引入了模块化,其设计思想是在编译时就能确定模 ...