前言

Promise是JavaScript异步操作解决方案,最近看到项目里不少人用了Promise 的库类,比如 bluebird、q 、jQuery.Deffered 等 polyfill promise 方式,使用的时候翻看长长的文档,真心累觉不爱。
es5 发展到现在,node 在0.12版本就已经支持了promise, 在客户端,大部分浏览器也支持了Promise, 如果要兼容低版本的浏览器,可以加上es5-shim等 polyfill promise。下面话不多说,来一起看看详细的介绍:
用法
Promise 常用场景。
一、处理异步回调
Promise 的基本用法, 处理异步回调。
function Pro1(){
return new Promise(function(resolve, reject) {
setTimeout(function(){
resolve('pro1')
}, 300)
})
}
//调用
Pro1()
.then(function(data){
console.log(data) //pro1
})
.catch(function(err){
throw new Error(err)
})
二、多个异步函数同步处理
有时候我们需要发送两个ajax,希望他们能一起把数据返回,就可以采用下面的办法。
function Pro1(){
return new Promise(function(resolve, reject) {
setTimeout(function(){
resolve('pro1')
}, 300)
})
}
function Pro2(){
return new Promise(function(resolve, reject) {
setTimeout(function(){
resolve('pro2')
}, 300)
})
}
//调用
var Pro = Promise.all([Pro1(), Pro2()]);
Pro
.then(function(data){
console.log(data[0], data[1]) //Pro1 Pro2
})
.catch(function(err){
throw new Error(err)
})
三、异步依赖异步回调
有些场景是一个异步依赖另一个异步的返回值的,就可以采用下面的用法。
比如: 用一个订单号异步取到订单详情,再用订单详情里的商品Id获取到商品详情。
function Pro1(orderId){
return new Promise(function(resolve, reject) {
setTimeout(function(){
var orderInfo = {
orderId: orderId,
productIds: ['123', '456']
}
resolve(orderInfo.productIds)
}, 300)
})
}
function Pro2(productIds){
return new Promise(function(resolve, reject) {
setTimeout(function(){
var products = productIds.map(function(productId){
return {
productId: productId,
name: '衣服'
}
})
resolve(products)
}, 300)
})
}
//调用
Pro1('abc123')
.then(function(productIds){
console.log('商品id',productIds)
return Pro2(productIds)
})
.then(function(products){
console.log('商品详情',products)
})
.catch(function(err){
throw new Error(err)
})
四、封装统一的入口办法或者错误处理
错误处理
function ErrorHandler(promiseObj, rejectOrResOrCallback){
return promiseObj.then(null, function(err){
if(!err)
})
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
# javascript
# promise
# javascript中promise
# 的promise
# 举例详解JavaScript中Promise的使用
# 浅谈js promise看这篇足够了
# Javascript Promise用法详解
# JavaScript中的Promise使用详解
# JS中Promise函数then的奥秘探究
# JavaScript Promise 用法
# 理解JavaScript中Promise的使用
# 详细解读JavaScript编程中的Promise使用
# JavaScript中Promise的使用方法实例
# 回调
# 多个
# 就可以
# 是一个
# 用了
# 不爱
# 这篇文章
# 再用
# 发展到
# 谢谢大家
# 多说
# 返回值
# 客户端
# 文档
# 不少人
# 有疑问
# ul
# shim
# brush
# js
相关文章:
广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
如何选择美橙互联多站合一建站方案?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
建站之星如何实现网站加密操作?
网站制作免费,什么网站能看正片电影?
如何用搬瓦工VPS快速搭建个人网站?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
已有域名和空间如何快速搭建网站?
建站之星如何配置系统实现高效建站?
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
自助网站制作软件,个人如何自助建网站?
已有域名和空间,如何快速搭建网站?
如何在阿里云完成域名注册与建站?
如何通过虚拟主机快速完成网站搭建?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
制作旅游网站html,怎样注册旅游网站?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
南京网站制作费用,南京远驱官方网站?
如何在腾讯云服务器快速搭建个人网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
香港服务器租用费用高吗?如何避免常见误区?
如何快速生成橙子建站落地页链接?
在线制作视频网站免费,都有哪些好的动漫网站?
如何在云指建站中生成FTP站点?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
ui设计制作网站有哪些,手机UI设计网址吗?
招贴海报怎么做,什么是海报招贴?
相册网站制作软件,图片上的网址怎么复制?
香港服务器选型指南:免备案配置与高效建站方案解析
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
,如何利用word制作宣传手册?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
宿州网站制作公司兴策,安徽省低保查询网站?
5种Android数据存储方式汇总
如何通过万网虚拟主机快速搭建网站?
如何高效利用亚马逊云主机搭建企业网站?
建站之星代理商如何保障技术支持与售后服务?
C#如何序列化对象为XML XmlSerializer用法
如何快速搭建高效WAP手机网站?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
建站之星安装步骤有哪些常见问题?
如何在橙子建站中快速调整背景颜色?
宝塔新建站点报错如何解决?
如何做网站制作流程,*游戏网站怎么搭建?
网站制作公司排行榜,抖音怎样做个人官方网站
网站app免费制作软件,能免费看各大网站视频的手机app?
*请认真填写需求信息,我们会在24小时内与您取得联系。