跳到主要内容

异步任务

返回值

CloudTower API 的变更类请求的返回值的类型将会是 WithTask<T> 对象或者一个对象数组 Array<WithTask<T>>, WithTask 是一个泛型类型,携带了 task_id 和对应的返回值。
type WithTask<T> = {
task_id: string | null;
data: T;
};
这个设计是由于 CloudTower API 大部分都是异步的,为不堵塞调用,我们会在占位资源被创建后立刻返回,同时返回一个 task_id。所以变更请求正确返回了并不一定能代表请求真的成功了,返回的 data 也只能代表一个临时的状态,除了资源的 id 以外,其余值都是不稳定的。

我们可以根据 task_id,通过 /v2/api/get-tasks 来查询任务的状态。需要持续轮询直到任务结束(任务完成或失败),才能知道任务结果是成功还是失败,从而确认请求是否真正成功。同时,可以再次使用返回的 data 的 id 来查询资源的最新状态。如果 task_id 为 null,则说明该请求是同步的,无需等待任务完成。