假设我在下面有以下代码,我在函数usersaApi.getUsersId
中将其称为useEffect
函数,是否必须使响应(因为它返回值,而不是Promise)成为异步函数?
const usersApi = {
getUserIds: async storyId => {
const result = await axios
.get(`${users + userId}.json`)
.then(({ data }) => data);
return result;
},
}
useEffect(() => {
const fetchData = async () => {
await usersApi.getUserIds().then(data => setUserIds(data));
};
fetchData();
}, []);
使用之间还有什么区别:
const fetchData = async () => {
await usersApi.getUserIds().then(data => setUserIds(data));
};
与
const fetchData = async () => {
const result = await usersApi.getUserIds().then(data => setUserIds(data));
return result;
};
我想我只能等待响应而不返回结果,对不对?这里有两个问题:
1)我是否必须在已经异步/等待的函数上使用async / await 2)在已经返回数据而不是承诺的函数上使用await和return之间的区别
1)我是否必须在已经异步/等待的函数上使用异步/等待
取决于您要使用哪种语法。您可以使用async / await,也可以使用较旧的.then
样式。我个人觉得异步等待样式更容易理解,所以我个人更喜欢它。但是,我建议不要混合使用两种语法。几乎从来没有必要这样做,而这最终会使代码更难以理解。要么写:
const fetchData = async () => {
const data = await userApi.getUserIds();
setUserIds(data);
}
要么:
const fetchData = () => {
userApi.getUserIds.then(data => setUserIds(data));
}
2)在已经返回数据而非承诺的函数上使用等待和返回之间的区别。
存在Async / await来简化使用Promise的语法。如果您不使用诺言,则不需要异步/等待。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句