gpt4 book ai didi

javascript - onClick 调度一个操作。我如何等待我的派送完成?

转载 作者:行者123 更新时间:2023-11-28 16:52:58 26 4
gpt4 key购买 nike

我的子组件中有这个executeOrder 函数。这是直接调用API从后端获取数据的方式

const executeOrder = async (data, actions) => {
value = await getToken(
props.orderTotal
);
return value.ecToken;

};

如您所见,我在 executeOrder 中使用了 await 函数。这样,它将等待执行完成,然后为我提供返回值value.ecToken

由于我使用 REACT,因此我必须使用操作调度程序并从我的 Redux saga 文件进行 API 调用。所以我创建了一个 Action 调度程序并以这种方式进行 API 调用。

const executeOrder = (data, actions) => {
props.initiateIdentity(props.orderTotal); //ACTION DISPATCHER
console.log("2");
return props.ecToken;
};

现在我如何确保这个 Action 调度程序完成它的执行?因为,我正在调度操作并进行 API 调用。 API 调用的响应,我将其置于某种状态,并通过 mapStateToProps

将状态值从主组件传递到子组件

props.initiateIdentity(props.orderTotal) 执行时,它会转到下一行 return props.ecToen 并且由于该值仍未提供回来从 API 调用中,我得到一个空白值。

我如何确保此操作调度程序已完成其任务?有人请帮助我

PS-这是我的 SAGA

function* initiateIdentity(action: TInitiateIdentPayPal) {
try {
const resp = yield call(
getToken,
orderTotal,
);
console.log("1");
yield put(savePiBlob(resp));
} catch (err) {
} finally {
}
}

最佳答案

在您的情况下,您必须创建 3 个操作的状态常量,然后在 saga 文件的 function* 中获得响应。你的传奇函数应该是这样的:

function* callApiInSaga(actions) {
try {
const data = yield callApiByAxiosOrFetch({ type: actions.data });
yield put({
type: constants.CALL_API_SUCCESS,
data,
}); `// if your function calling api is executed, and you get response from server, put({}) in saga will have you transfer data from saga to reducer. and you can use data via mapDispatchToProps:`
} catch (error) {
yield put({
type: constants.CALL_API_FAILED,
});
}
}

关于javascript - onClick 调度一个操作。我如何等待我的派送完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59709745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com