全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Javascript中Promise的四种常用方法总结

前言

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小时内与您取得联系。