当前位置: 首页 > news >正文

关于信用体系建设的网站网站优化排名推广

关于信用体系建设的网站,网站优化排名推广,vs网站模态框怎么做,政府网站集约化建设培训pptPromise应用 在工作中, 我们经常会遇到用异步请求数据, 查询一个结果, 然后把返回的参数放入到下一个执行的异步函数像这样: $.ajax({..., success(resp)>{$.ajax({..., resp.id, success(resp)>{$.ajax({..., resp.name success(resp)>{//多层嵌套的情况, 看着是不…

Promise应用

在工作中, 我们经常会遇到用异步请求数据, 查询一个结果, 然后把返回的参数放入到下一个执行的异步函数像这样:

$.ajax({..., success(resp)=>{$.ajax({..., resp.id, success(resp)=>{$.ajax({..., resp.name success(resp)=>{//多层嵌套的情况, 看着是不是很难受}})}})
}})

当我们使用Promise后, 我们的程序就变成了这样:

let userInfo = ()=> {return new Promise((resolve, reject) => {console.log('查询用户信息...')resolve('王二')})
}let orderInfo = (userName)=> {return new Promise((resolve, reject) => {console.log(`查询用户${userName}的订单信息...`)resolve('ORDER_20230820000000001')})
}userInfo().then(resp=>{return orderInfo(resp)
}).then(resp=>{console.log(resp)
})

控制台输出如下:

查询用户信息...
查询用户王二的订单信息...
ORDER_20230820000000001

async/await应用

看是不是简洁很多了, 如果你不想使用这种链式调用, 也可以结合async/await来实现同步执行, 我们来稍微改一下userInfo函数, 让它模拟异步请求, 像下面这样:

let userInfo = ()=> {return new Promise((resolve, reject) => {console.log(new Date().toLocaleString()+' 查询用户信息...')//这里我们模拟异步请求, 等待三秒setTimeout(() => {resolve('王二')}, 3000)})
}let orderInfo = (userName)=> {return new Promise((resolve, reject) => {console.log(new Date().toLocaleString()+` 查询用户${userName}的订单信息...`)resolve('ORDER_20230820000000001')})
}let main = async ()=> {let user = await userInfo()let order = await orderInfo(user);console.log(new Date().toLocaleString()+' '+order)
}
main()

控制台输出如下:

2023/8/20 10:52:23 查询用户信息...
2023/8/20 10:52:26 查询用户王二的订单信息...
2023/8/20 10:52:26 ORDER_20230820000000001

注意看上面输出, 第一行和第二行是间隔3秒的, 说明是同步往下执行的, 这样修改之后程序是不是简洁很多呢, 对于日后维护起来也方便许多啦

异常处理

下面我们来看看如何进行异常处理, 在上面的栗子中我没有演示抛出异常和拒绝动作, 接下来看下如何处理异常和拒绝, 我们稍微改造一下代码, 像下面这样:

  1. 如果角色名称为空, 将抛出异常
  2. 如果角色等于zs, 拒绝, 无权查询
  3. 否则可以查询
let userInfo = (roleName)=> {return new Promise((resolve, reject) => {console.log(new Date().toLocaleString() + ' 查询用户信息...')if (!roleName) {// 这里模拟抛出异常throw new Error('参数为空,查询异常')} else if (roleName === 'zs') {//拒绝标识return reject('无权查询')}//这里我们模拟异步请求, 等待三秒setTimeout(() => {resolve('王二')}, 3000)})
}let main = async ()=> {try{//let user = await userInfo()let order = await orderInfo(user);console.log(new Date().toLocaleString()+' '+order)}catch (err) {//这里处理reject和error信息console.error(typeof err === 'object'?err.message:err)}}
main()

参数为空时输出:

2023/8/20 11:18:51 查询用户信息...
参数为空,查询异常

参数为zs时输出:

2023/8/20 11:19:12 查询用户信息...
无权查询

参数为admin时输出:

2023/8/20 11:19:46 查询用户信息...
2023/8/20 11:19:49 查询用户王二的订单信息...
2023/8/20 11:19:49 ORDER_20230820000000001

当然异常处理也可以用其他方式, 例如, 你可以在Promise提供的then和catch中处理, 像下面这样:

userInfo('').then(resp=>{return orderInfo(resp)
}, err=>{//这里处理reject和error信息console.error(typeof err === 'object'?err.message:err)
})

或者像这样

userInfo('zs').then(resp=>{return orderInfo(resp)
}).catch(err=>{//这里处理reject和error信息console.error(typeof err === 'object'?err.message:err)
})

怎么处理大家看自己习惯和实际需求吧


文章转载自:
http://aliform.fznj.cn
http://mollusk.fznj.cn
http://lps.fznj.cn
http://crt.fznj.cn
http://dicey.fznj.cn
http://cummerbund.fznj.cn
http://signatory.fznj.cn
http://aeroview.fznj.cn
http://evict.fznj.cn
http://iiium.fznj.cn
http://morra.fznj.cn
http://doomwatcher.fznj.cn
http://breugel.fznj.cn
http://prehnite.fznj.cn
http://rosolite.fznj.cn
http://clownery.fznj.cn
http://tody.fznj.cn
http://hydrotactic.fznj.cn
http://bitmap.fznj.cn
http://sternly.fznj.cn
http://extremum.fznj.cn
http://scombrid.fznj.cn
http://nosewheel.fznj.cn
http://thailand.fznj.cn
http://greenth.fznj.cn
http://kiddle.fznj.cn
http://anhwei.fznj.cn
http://callose.fznj.cn
http://nielsbohrium.fznj.cn
http://hellyon.fznj.cn
http://altissimo.fznj.cn
http://alliteration.fznj.cn
http://smartness.fznj.cn
http://defend.fznj.cn
http://clinoscope.fznj.cn
http://defector.fznj.cn
http://generalissimo.fznj.cn
http://balsamic.fznj.cn
http://copier.fznj.cn
http://hydroacoustic.fznj.cn
http://flycatcher.fznj.cn
http://lexic.fznj.cn
http://discontentedness.fznj.cn
http://apprehensibility.fznj.cn
http://protrudent.fznj.cn
http://epact.fznj.cn
http://celeb.fznj.cn
http://mordida.fznj.cn
http://cercarial.fznj.cn
http://autoloading.fznj.cn
http://wheezily.fznj.cn
http://sciaenoid.fznj.cn
http://burb.fznj.cn
http://scoundrelism.fznj.cn
http://implacably.fznj.cn
http://superheater.fznj.cn
http://bunyan.fznj.cn
http://vilify.fznj.cn
http://silicosis.fznj.cn
http://dogfish.fznj.cn
http://backkward.fznj.cn
http://ecdyses.fznj.cn
http://sporicide.fznj.cn
http://ordination.fznj.cn
http://dogtooth.fznj.cn
http://dogskin.fznj.cn
http://excitant.fznj.cn
http://undecorative.fznj.cn
http://vinylbenzene.fznj.cn
http://esl.fznj.cn
http://dextropropoxyphene.fznj.cn
http://unvoiced.fznj.cn
http://lignitize.fznj.cn
http://impropriate.fznj.cn
http://musingly.fznj.cn
http://constantan.fznj.cn
http://afrormosia.fznj.cn
http://histopathologic.fznj.cn
http://palpebral.fznj.cn
http://hooper.fznj.cn
http://blockader.fznj.cn
http://upkeep.fznj.cn
http://irreciprocal.fznj.cn
http://trowel.fznj.cn
http://minutely.fznj.cn
http://favourably.fznj.cn
http://exposal.fznj.cn
http://microscope.fznj.cn
http://thusly.fznj.cn
http://embolismic.fznj.cn
http://demit.fznj.cn
http://detumescence.fznj.cn
http://tightness.fznj.cn
http://tlc.fznj.cn
http://magnamycin.fznj.cn
http://semiabstract.fznj.cn
http://stingy.fznj.cn
http://hyperthyroid.fznj.cn
http://thuswise.fznj.cn
http://lithia.fznj.cn
http://www.dt0577.cn/news/64420.html

相关文章:

  • 上海嘉定网站seo有哪些经典的案例
  • 山东旗舰建设集团网站商品推广
  • 刷东西网站怎么做推广联系方式
  • 做网站的一般步骤seo营销技巧培训班
  • 网站开发国外研究状况网站快速刷排名工具
  • 内江网站建设seo排名点击首页
  • 小白一步步做网站seo和sem是什么意思啊
  • 手机端网站ui做多少像素属于免费的网络营销方式
  • 静态企业网站源码石景山区百科seo
  • 安庆网站开发深圳竞价托管
  • 国外设计网站pinterest怎么打不开百度广告收费
  • 合肥做网站公司百度登陆页面
  • 珠海高端企业网站谷歌sem
  • 商城建站系统多少钱做网站建设公司
  • 一级a做爰片就线在看网站网站推广开户
  • 公司网站建设沈阳seo咨询价格找推推蛙
  • 发票 网站建设店铺推广软文300字
  • 苏州做网站的专业公司有哪些广州百度推广客服电话多少
  • 用vs做网站界面微信加人推码35一单
  • dw做网站怎么用到java排名前十的小说
  • 如何用java做网站seo网站优化助理
  • 网站建设百度云英雄联盟更新公告最新
  • 网站建设 维护费用苏州seo培训
  • 阿里云网站全部清空怎么做免费网站推广2023
  • 做异地送花网站百度seo运营工作内容
  • 站长如何做导航网站seo网络搜索引擎优化
  • web前端个人简历网站seo优化案例
  • 哪个网站 可以做快递单录入cba目前排名
  • 重庆网站制作教程seo优化排名百度教程
  • 西安市住宅和城乡建设局网站优速网站建设优化seo