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

外贸公司网站建设费的会计科目寿光哪里做网站

外贸公司网站建设费的会计科目,寿光哪里做网站,前沿设计公司网站,网页设计提升班有哪些Promise应用 在工作中, 我们经常会遇到用异步请求数据, 查询一个结果, 然后把返回的参数放入到下一个执行的异步函数像这样: $.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://www.yayakq.cn/news/506962/

相关文章:

  • 印刷 网站模板用node.js可以做网站吗
  • 网站惩罚查询wordpress keywords不见
  • 网站app充值记账凭证怎么做网站建设步骤完整版
  • 网站框架搭建设计有网站怎么做seo推广
  • 网站建设方案500字wordpress 设置登陆界面
  • 利于seo的建站系统有哪些江门网站建设
  • 石排网站设计aspcms手机网站源码
  • 图书馆理论与建设网站新媒体ui设计是干什么的
  • 建设工程法律网站北京计算机培训学校
  • 网站校园推广案例上首页seo
  • 广元专业高端网站建设安徽省造价信息网官网
  • 网站开发学习培训网站建设及推广好做吗
  • 做预约的网站wordpress浮动菜单
  • 网站的域名怎么起网站seo方案策划书
  • 泰安网站开发制作公司亚马逊展示型广告
  • 河北网站建设团队大连建站企业
  • 网站设计比例网站需要什么费用
  • 好公司网站建设价格低网站建设与规划学的心得体会
  • 做网站需要关注哪些重要问题汽车网站建设的目的
  • 网站建设弹窗代码wordpress 倒计时插件
  • 499可以做网站修改wordpress版权信息
  • 太原 网站建设公司陕西住房建设厅官方网站
  • 化妆网站模板微网站 制作
  • 企业网站建设中图片优化的方法化学试剂网站建设
  • 怎么制作网站一键更新如何制作一款游戏
  • 中文网站建设中模板哪些域名不能够做淘宝客网站
  • 电脑做网站服务器改端口广告公司推广
  • 中小企业网站制作价格凤凰手机网官网
  • 消防做ccc去那个网站wordpress图片pin按钮
  • 怎样制作网站电话怎么做电子商务营销