【发布时间】:2020-11-07 02:37:45
【问题描述】:
基本上我有一个对象数组,根据该数组的长度,我需要像这样为每个实例做一个突变:
arrayOfObjects.forEach((object) => {
someGraphQlMutation({
variables: object.id,
});
});
-----------------
const [someGraphQlMutation] = useMutation(
SOME_GRAPHQL_MUTATION,
{
onCompleted: (data) => {
// callback
}
}
);
但是,在所有的突变完成之后,我需要调用另一个函数。在调用回调函数之前,我需要等待迭代突变完成。我可以在这种情况下使用Promise.all 吗?
【问题讨论】:
-
从技术上讲,您可以只创建一个包含您需要的所有查询的单一突变,但
useMutation听起来像hook,所以不,在这种情况下您不能使用Promise.all -
应该避免这种模式,因为重复的网络往返和累积延迟(更不用说当一个突变失败但它们打算作为一个组执行时错误处理的复杂性)。创建一个接受数组并在服务器上处理迭代的新突变。
标签: javascript reactjs graphql graphql-mutation