関数が実行されない問題について
下記コード上ではeditName
が実行されません。
Promise.allの引数にeditName({ variables: { input: { name } } })
を直接代入すると実行可能ですが、editNameFunc
に代入すると実行されないのですが、実行されない理由がわかりません。
ご教示いただきたいです。
よろしくお願いします。
js
1import { useMutation } from '@apollo/client' 2 3const [editName, { error }] = useMutation(SOMETHING_MUTATION) 4 5const clickButton = async (name: string) => { 6 const sleep = () => new Promise((resolve) => setTimeout(resolve, 500)) 7 const editNameFunc = async() => await editName({ variables: { input: { name } } }) // 実行されない 8 9 await Promise.all([sleep, editNameFunc]).then(() => { 10 console.log('complete!') 11 }) 12}
##補足①
無名関数でラップしないとeditName
が即時実行されてしまうと思ったため、下記の記述はしていません。
下記の記載で問題ないのでしょうか。
js
1import { useMutation } from '@apollo/client' 2 3const [editName, { error }] = useMutation(SOMETHING_MUTATION) 4 5const clickButton = async (name: string) => { 6 const sleep = () => new Promise((resolve) => setTimeout(resolve, 1000)) 7 const editNameFunc = editName({ variables: { input: { name } } }) // ここで即時実行されてしまう? されない? 8 9 await Promise.all([sleep,mutation]).then(() => { 10 console.log('complete!') 11 }) 12}
補足②
editNameはmutate functionです。typeは下記のようになっています。
const editName: (options?: MutationFunctionOptions<any, OperationVariables> | undefined) => Promise<FetchResult<any, Record<string, any>, Record<string, any>>>
回答2件
あなたの回答
tips
プレビュー