Promise
2019-07-26 10:18
295 查看
(九)Promsie 解决异步回调问题
传统的解决异步的方法:(1)回调函数(2)事件驱动
(1-1)Promise
[code]//语法格式 var promise = new Promise(function(resolve,reject){ resolve('成功'); reject('失败'); }) promise.then(res=>{ console.log(res); // 成功的返回 }).catch(err=>{ console.log(err); // 失败的返回 })
[code]// Promise.resolve('aaa'); 将现有的东西转换成Promise对象, resolve成功的状态 var p1 = Promise.resolve('aaa'); p1.then(res=>{ console.log(res); // 成功的返回 }) //--------等价于----------- var p1 = new Promise(function(resolve,reject){ resolve('aaa'); }) // Promise.reject('bbb'); 将现有的东西转换成Promise对象, reject失败的状态 var p2 = Promise.reject('bbb'); p2.then(res=>{ console.log(res); // 成功的返回 }).catch(err=>{ console.log(err); // 失败的返回 })
(1-2)Promise.all([]) 把Promise打包,放进一个数组里面,打包完后还是一个Promise对象。
必须确保,所有的Promise对象都是resolve状态
(1-3)Promsie.race([]) 只要有个一成功就返回。
写了一个栗子,可以瞅瞅:
[code]let status = 1; // 默认状态为1 // 用户登录 let userLogin = (resolve,reject)=>{ setTimeout(()=>{ if(status == 1){ resolve({data:'abcd',msg:'用户登录成功',token:''}) }else{ reject('用户登录失败'); } },2000) } // 获取用户登录信息 let userMsg = (resolve,reject)=>{ setTimeout(()=>{ if(status == 2){ resolve({data:'',msg:'',username:'柠檬',age:'18'}) }else{ reject('获取用户信息失败'); } },1000) } new Promise(userLogin).then(res=>{ console.log('用户登录成功'); return new Promise(userMsg); }).then(res=>{ console.log('获取用户信息成功'); console.log(res); }).catch(err=>{ console.log(err); })
相关文章推荐
- Callback 与 Promise 间的桥梁 —— promisify
- 前端神器Promise的用法介绍
- 使用Promise
- async await promise
- 了解Promise
- Promise在工作中常用的几种示例
- 【第1140期】如何让异步接口同时支持 callback 和 promise
- mongoose mpromise被废弃警告,(node:3341) DeprecationWarning: Mongoose: mpromise (mongoose's default promis
- Promise API 简介
- js的async/await与普通的promise和ajax对比
- 异步和promise
- 通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise 推荐
- [Typescript] Promise based delay function using async / await
- es6 Promise 的应用
- 用async-await实现类似Promise.all()的执行效果
- JS - Promise使用详解--摘抄笔记
- JavaScript-Promise对象基础
- Promise 基础 与 使用套路
- Promise对象实现异步编程
- Promise对象实现异步编程