如何用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); }); } } 

当只有一个参数提供给我的时候,那么这对我来说是非常简单的,但是如果你有两个这样的参数,会发生什么呢?

以下是如何使用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function作为参考:

  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