下面來講一說經過async和await方式來輔助請求和封裝javascript
首先咱們定義一個類,定義一個async方法,纔可使用awaitjava
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)的判斷react
咱們再來看看重要的insert方法應該怎麼寫呢api
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) }) }) }
看起來貌似有點複雜?其實核心的代碼只有下面的部分async
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便可。ide