【发布时间】:2021-03-08 12:19:17
【问题描述】:
- 我有 Redux 存储功能,我必须在其中创建 AJAX 并相应地更新状态。但是,我创建了以下函数,它在返回状态之前不会更新 x 值。所以,我创建了
async函数。
var x =[]
lookup(
"GET",
"api/post/",
(response, status: number) => {
Object.assign(x, response);
}
);
console.log(x,'her x stay just ampty array []');
switch (action.type) {
case "SetData":
return { ...state, data: x };
default:
return state;
}
- 在下面的示例中,我试图在函数
lookup之外获取响应,因此我创建了一个名为newData的同步,如何让它直接重新运行res而不会在其中破坏var。李>
const newData = async () => {
var x: any = [];
await lookup(
"GET",
"api/post/",
(response: myArrays["posts"], status: number) => {
Object.assign(x, response);
}
);
return x;
};
console.log(newData().then((res) => res));
switch (action.type) {
case "SetData":
return { ...state, data: newData().then((res) => {return res}) };
default:
return state;
}
- 请注意:我不能在我的 store 函数中使用 React.usesState(),因为它不是一个组件函数。
【问题讨论】:
-
听起来您需要更多地熟悉 javascript(或一般而言)中的异步编程。 google.com/search?q=understanding+promises 为您提供开始 trom 的结果分配。促使我做出此回应的是您在 console.log 函数中的使用。在 Promise(异步函数返回的内容)上调用 then 并不会神奇地将其转换为同步“值”,您可以使用 Promise 的“Then”函数来转换其数据或在数据准备好时执行操作,但是Then 函数只返回一个新的承诺。我们都去过你现在的位置。
标签: javascript reactjs redux