Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何直接从异步函数返回对象? 我有Redux存储函数,在这里我必须生成一个AJAX并相应地更新状态。但是,我创建了以下函数,它在返回状态之前不更新x值。因此,我创建了async函数 在下面的示例中,我试图在函数lookup之外获取响应,因此我创建了一个名为newData的同步,以使其直接重新运行res,而不在其内部添加var 请注意:我不能在store函数中使用React.UseState(),因为它不是组件函数_Javascript_Reactjs_Redux - Fatal编程技术网

Javascript 如何直接从异步函数返回对象? 我有Redux存储函数,在这里我必须生成一个AJAX并相应地更新状态。但是,我创建了以下函数,它在返回状态之前不更新x值。因此,我创建了async函数 在下面的示例中,我试图在函数lookup之外获取响应,因此我创建了一个名为newData的同步,以使其直接重新运行res,而不在其内部添加var 请注意:我不能在store函数中使用React.UseState(),因为它不是组件函数

Javascript 如何直接从异步函数返回对象? 我有Redux存储函数,在这里我必须生成一个AJAX并相应地更新状态。但是,我创建了以下函数,它在返回状态之前不更新x值。因此,我创建了async函数 在下面的示例中,我试图在函数lookup之外获取响应,因此我创建了一个名为newData的同步,以使其直接重新运行res,而不在其内部添加var 请注意:我不能在store函数中使用React.UseState(),因为它不是组件函数,javascript,reactjs,redux,Javascript,Reactjs,Redux,你不可能用你想要的方式来做这件事。您需要做的是这样的事情: const data = await newData(); dispatch({ type: "SetData", data }) Redux reducer不能是异步的。Redux reducer接受以前的状态和操作,并将其映射到新操作。就这样。不能从减速机调度操作或触发API调用 API调用需要在其他地方执行——在组件中、在操作创建者中,等等。一旦API调用完成,您就可以使用收到的数据发送一个“SetData”

你不可能用你想要的方式来做这件事。您需要做的是这样的事情:

const data = await newData();
dispatch({ type: "SetData", data })

Redux reducer不能是异步的。Redux reducer接受以前的状态和操作,并将其映射到新操作。就这样。不能从减速机调度操作或触发API调用


API调用需要在其他地方执行——在组件中、在操作创建者中,等等。一旦API调用完成,您就可以使用收到的数据发送一个“SetData”操作。然后,减速器根据此数据更新
状态。

以下操作应有效:

const newData=async()=>{
返回等待查找(
“得到”,
“api/post/”,
(回复:myArrays[“posts”],状态:number)=>{
赋值(x,响应);
}
);
};
log(等待newData());
通过这种方式,您可以避免在
newData
内按要求分配另一个
var


另外,还可以查看这篇关于如何使用redux进行异步数据获取的文章。

听起来您需要进一步熟悉javascript(或一般)中的异步编程。为您分配开始trom的结果。提示我做出此响应的是您在console.log函数中的使用。然后调用承诺(异步函数返回的内容)并不会神奇地将其转换为同步“值”,您可以使用承诺的“then”函数转换其数据或在数据准备就绪时执行操作,但then函数只返回一个新的承诺。我们都已经到了您现在的位置。
'await'表达式只允许在异步函数内和模块的顶层使用。ts(1308)
尝试按照消息所述将
async
添加到包装函数中。您不能像
async console.log(await newData())
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;
  }
const data = await newData();
dispatch({ type: "SetData", data })