ES6 async 与 await 实战
2023-09-11 14:15:30 时间
下面来说一说通过async和await方式来辅助请求和封装
首先我们定义一个类,定义一个async方法,才可以使用await
class JForm extends React.Component { handleSubmit = () => { ... this.handleInsert(obj) ... } async handleInsert(obj) { let url = '...' let res = await insert(url, obj) if(res){ this.hideModal(); this.props.refresh(); } }; }
上面是一个react的一段代码,当触发handleSubmit 表单提交方法,会调用handleInsert方法,此时会等await insert 执行完返回结果再执行if(res)的判断
我们再来看看重要的insert方法应该怎么写呢
export function insert(url, obj) { return new Promise(function (resolve, reject) { const hide = message.loading('正在新增...', 0); let res = apiPost(url, obj).then(function (res) { const {data, ret, msg} = res; hide(); if(ret==200) { Success(`添加1条数据`); } else { Error(res.msg); } resolve(ret==200?true:false) }) }) }
看起来貌似有点复杂?其实核心的代码只有下面的部分
export function insert(url, obj) { return new Promise(function (resolve, reject) { resolve(ret==200?true:false) }) }
对的,只有 return new Promise 和 resolve() ,resolve里面的data就是let res要接收的值了,我们可以在请求后将结果传入resolve即可。
相关文章
- es6 - foreach
- 【学习笔记50】ES6的新增属性1
- ES6基础入门之let、const
- Cannot find module 'core-js/modules/es6.regexp.constructor'
- ES6新特性:Javascript中的Reflect对象
- 5-es6的模块化开发与其它的不同
- ES6属性全了解
- Demystifying Closures, Futures and async-await in Rust–Part 3: Async & Await
- es6语法
- ES6---class的静态方法、静态属性和实例属性
- es6 Symbol
- ES6新特性三: Generator(生成器)函数详解
- [js高手之路] es6系列教程 - Set详解与抽奖程序应用实战
- 小知识随手记(十):多重重复解构对象、es6函数带默认参数时将生成声明作用域、一些注意点、动态设置getter/setter、mysql将字符串字段转为数字排序或比大小、pointer-events:none;属性
- ES6之Spread Operater拷贝对象
- vue 完全入门系列 之 前置知识-ES6模块化/Promise/async|await/EventLoop/宏任务|微任务/API接口案例
- JavaScript ES6 规范
- JavaScrpt LRC歌词同步 和 es6 的 fetch 的 async/await 和 promise 两种写法