我正在尝试在 JavaScript 中做一些工作 - 我从异步函数调用异步函数,如下所示。
useEffect(() => {
(async () => {
await asyncFunction();
// do stuff
})();
}, []);
asyncFunction 看起来像这样const asyncFunction = (dispatch) => {
return async (data) => {
try {
const response = await APICall();
dispatch({ type: "search", payload: response.data });
}
// error handling
}
asyncFunction 调度到一个reducer,它返回return { errorMessage: "", data: action.payload };
通过我自己的测试,我已经看到 console.log(asyncFunction())
返回一个 promise ,console.log(await asyncFunction())
什么都不返回。我注意到的一件奇怪的事情是,在程序的每个部分中放置 console.log 语句时,首先打印出来自函数调用(在 useEffect block 中)的 promise ,然后是来自 console.log 语句的 reducer 中的数据右添加了
return { errorMessage: "", data: action.payload };
.所以我的问题是,我如何访问这些数据?我在这里查看了其他一些建议使用
.then
的线程。 ,但这并不成功。有没有办法在不传入回调函数的情况下做到这一点(这样做意味着我需要重组整个程序)。这篇文章有点长,所以如果您有任何问题,或者需要我的程序的其他部分,请告诉我。
最佳答案
我可能完全错了,但我认为您可能会遇到返回异步函数的问题,explained here in docs .
此外,看起来您可能正在调用 asyncFunction (在您的 useEffect Hook 内)而没有调度值?这里:
(async () => {
await asyncFunction();
// do stuff
按照您的计划,我为 API 调用反刍了一个自定义钩子(Hook):link to sandbox .
希望它会有所帮助!
关于javascript - 如何在异步函数中从此返回的对象中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65661858/