es6 Promise是什么?
# es6 Promise是什么?
1. Promise 是一个构造函数 自带三个方法 all、resolve、reject,原型上(prototype)有then、catch等的几个常用的方法。
``` javascript
var getUserInfo=function(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
let a={
user:"jevons"
}
if((typeof a)=="object"){
resolve(a)
}else{
reject("error!")
}
},3000)
})
```
2. getUserInfo函数中return了一个Promise构造函数,其中传入两个参数(resolve,reject),分别表示异步执行成功后的回调函数及异步执行失败的回调函数,
在上面函数中,我们执行了一个异步操作setTimeout,3秒后执行判断 如果是对象回调resolve,不是回调reject。
```javascript
getUserInfo().then((user)=>{
console.log(user)//a={user:'jevons'}
}).catch((error)=>{
console.log(error)
})
```
3. 我们可以使用then方法进行成功后的回调,catch处理失败后的回调。那么这样写的意义在哪里? 假设我们定义了
一个getUserInfo的异步请求方法,我们需要异步请求结束后再进行其它操作?我们的常规想法是在异步请求里面在执行其它的操作不就行了,那么问题来了,
有多层回调该怎么办?Promise的优势在于,可以在then方法中继续写Promise对象并返回,然后继续调用then来进行回调操作。
```javascript
var getUserInfo = function() {
return new Promise((resolve, reject) => {
setTimeout(() => {
let a = {
user: "jevons1"
}
if ((typeof a) == "object") {
resolve(a)
} else {
reject("error1")
}
}, 3000)
})
}
var getUserInfo2 = function() {
return new Promise((resolve, reject) => {
setTimeout(() => {
let a = {
user: "jevons2"
}
if ((typeof a) == "object") {
resolve(a)
} else {
reject("error2")
}
}, 3000)
})
}
getUserInfo().then((user) => {
console.log(user)//a = {
user: "jevons1"
} 3秒后
return getUserInfo2();
}).catch((error) => {
console.log(error)
}).then((user) => {
console.log(user)//a = {
user: "jevons2"
} 6秒后
}).catch((error) => {
console.log(error)
})
```
4. 当然你可以直接返回数据
```javascript
getUserInfo().then((user) => {
console.log(user)//a = {
user: "jevons1"
} 3秒后
return getUserInfo2();
}).catch((error) => {
console.log(error)
}).then((user) => {
console.log(user)//a = {
user: "jevons2"
} 6秒后
return "我是直接返回的";
}).catch((error) => {
console.log(error)
}).then((user)=>{
console.log(user) //我是直接返回的
})
```
5. Promise的all方法提供了并行执行异步操作的能力,并且在所有异步操作执行完后才执行回调。
```javascript
Promise
.all([getUserInfo1(),getUserInfo2()])
.then(function(results){
console.log(results);
})
```
es6 Promise是什么?相关推荐
- 十分钟快速了解 ES6 Promise
转载自 十分钟快速了解 ES6 Promise 什么是Promise Promise最早由社区提出并实现,典型的一些库有Q,when, bluebird等:它们的出现是为了更好地解决JavaScrip ...
- 解读ES6 Promise
详解ES6 Promise异步 文章目录 详解ES6 Promise异步 前言 一.Promise是什么呢... 二.resolve 三.reject 四.then() & catch() 五 ...
- 流程控制: jQ Deferred 与 ES6 Promise 使用新手向入坑!
谢谢n͛i͛g͛h͛t͛i͛r͛e͛大大指出的关于Promise中catch用的不到位的错误,贴上大大推荐的文章Promise中的菜鸟和高阶错误,文章很详细说明了一些Promise使用中的错误和指导. ...
- ES6 — Promise基础用法详解(resolve、reject、then、catch,all,)
ES6 - Promise基础用法详解 Promise 是一个构造函数,它自身拥有all.reject.resolve这几个眼熟的方法, 原型上有then.catch等同样熟悉的方法. 所以,在开始一 ...
- ES6 promise 用法小结
ES6 promise 用法小结 Js 是一⻔单线程语言,早期解决异步问题,大部分是通过回调函数进行. 比如我们发送 ajax 请求,就是常见的一个异步场景,发送请求后,一段时间服务器给我们响应,然后 ...
- Vue进阶(四十五):精解 ES6 Promise 用法
文章目录 一.前言 二.链式操作用法 三.reject 用法 四.catch 用法 五.all 用法 六.race 用法 七.总结 八.拓展阅读 一.前言 复杂难懂概念先不讲,我们先简单粗暴地把Pro ...
- ES6 Promise原理
ES6 Promise原理 一.Promise是什么 二.为什么会有Promise 1.回调地狱 + 异步同步事件调用顺序带来的双重伤害 2.回调事件的分离 三.Promise的三种状态 1.reso ...
- 初探 es6 promise
javascript是单线程程序,所有代码都是单线程执行.导致javascript的网络请求都是异步执行,异步执行可以通过回调函数实现: setTimeout(callback,1000); func ...
- es6 --- Promise封装读取文件操作
Promise: es6中为了解决回调地狱问题而产生的 Promise的参数 Promise的参数是一个函数. 每个Promise在实例化时,都会立即执行参数里的函数 const p = new Pr ...
最新文章
- 玩转 JavaScript 面试:何为函数式编程?
- 用了fastapi还需要nginx_专门为API接口开发出现,FastAPI零门槛学习
- https下 http的会被阻塞 This request has been blocked; the content must be served over HTTPS.
- struts2 跳转类型 result type=chain、dispatcher、redirect
- jvm(10)-早期(编译期)优化
- C++:50---虚析构函数
- Android 物联网 传感器
- linux su oracle permission denied,su: /bin/bash: Permission denied带来的疑惑
- 腾讯帝国十八年,被它借鉴过的产品都有哪些?
- smali-2.2.4.jar baksmali-2.2.4.jar
- 基础数据类型转换过程中注意事项
- Redis中的Scan命令的使用
- 三点弯曲弹性模量怎么计算公式_三点弯曲测试介绍
- 余淼杰老师 经济学原理复习笔记(微观)
- nginx的日志格式记录真实客户端IP
- Data.gov.uk电子政务云,牛津大学NIE金融大数据实验室王宁:数据治理的现状和实践...
- 服务器心跳信号,服务器心跳线设置
- hanoi塔经典递归算法
- node.js实现图片裁剪+获取图片大小+加logo水印
- 如何区分“指向const对象的指针”和“const指针”?
热门文章
- 重启计算机按哪几个键,电脑键盘哪个键是重启键?
- 怎样做一个好的网管?
- Spring boot系统拦截处理异常调转404/500页面
- libed2k源码导读:(三)网络IO
- python编辑程序、根据输入的百分制数_输入一个百分制成绩,利用switch语句编写程序,要求输出成绩等级A B C D,E。90以上为A...
- java 替换文件中的字符串
- 中国武术高手要在郑州开比武大会?还请了马云做裁判?
- 选择排序、冒泡排序、插入排序、快速排序、希尔排序、归并排序、堆排序和希尔排序的java实现比较
- 【科研小工具】输入任意坐标即可显示相应脑区详细解剖信息
- 非全日制研究生-在职程序员提升的不错选择