Uploadthing:onClientUploadComplete是否必定在上传Promise resolve前执行完毕?
问题解答
能保证onClientUploadComplete在runningAvatarUpload这个Promise resolve前执行完毕,你的表单提交逻辑是安全的。
原因在于这类上传工具的设计逻辑:当你调用startAvatarUpload发起上传后,内部会在上传流程完成并拿到返回结果后,优先触发配置的onClientUploadComplete回调,等回调执行完成(你的回调是同步执行form.setValue),才会让返回的Promise进入resolved状态。
结合你的代码流程拆解:
- 调用
startAvatarUpload([file])后,工具开始处理上传,拿到返回结果res; - 先执行
onClientUploadComplete回调,完成avatarUrl字段的赋值; - 回调执行完毕后,
startAvatarUpload返回的Promise才会resolve; - 你在
onSubmit里await这个Promise时,avatarUrl字段已经被填充,后续form.getValues()能拿到正确值。
如果后续你需要在onClientUploadComplete里加入异步操作,需要确认上传工具是否会等待回调内的异步任务完成再resolve Promise,但就当前同步赋值的代码来看,完全不存在字段未填充就提交的问题。
内容的提问来源于stack exchange,提问作者Florian Walther
相关产品推荐
相关产品推荐

