如何用async / await重构这个函数?
我很新asynchronous/等待,想知道什么是最好的方式来重构下面的代码与asynchronous/等待?
export const createUser = (values, history) => { return dispatch => { axios.post('/api/signup', values) .then(res => { console.log('result', res); }, rej => { console.log('rejection', rej); }); } }
当只有一个参数提供给我的时候,那么这对我来说是非常简单的,但是如果你有两个这样的参数,会发生什么呢?
const f = (values, history) => { return async function createUser( dispatch ) { try { const res = await axios.post('/api/signup', values); console.log('result', res); } catch(e) { console.log('reject', e); } }; }
这两个参数就是成功和错误的callback。 你也可以把它写成.then(res => {}).catch(rej => {})
基本上你可以把await
的结果想象成一个callback。 任何时候你都在等待承诺的结果,无论你是否使用它,请使用await.
对于任何错误,请使用通常的try
/ catch
。
return async () => { try { const res = await axios.post('/api/signup', values); console.log('result', res); } catch (rej) { console.log('rejection', rej); } }
有一件事要记住, async
函数总是返回一个Promise
,所以调用代码必须被写入来解决这个问题。
我写了一篇关于async
/ await
的博客文章(免责声明,是的, 我写了这个)。 1