我需要订阅以返回所请求类型的初始状态。
我的应用程序中有任务系统,任务可能具有多个状态:CREATED
,QUEUED
,RUNNING
,COMPLETED
,CANCELLED
,{{ 1}}等。
创建任务时,它具有CANCELLING
状态,然后根据其类型经历多个状态,直到为CREATED
。
有一个订阅COMPLETED
,它按照说的做。
这是一个订阅解析器:
taskUpdated(id: ID!): Task
如何在迭代器中设置初始任务状态?有人建议围绕迭代器创建一个包装器,以完成工作,但是我没有从哪里开始的想法,这似乎是一个过大的选择。是否有针对此问题的简单解决方案?
PS。由于前端的限制,在我的情况下,请不要进行 taskUpdated: {
subscribe: async (...args) => {
try {
// get initial task state
const initialTaskData = await resolveTask(args[1].input);
const cb = withFilter(
(_, { input }) => {
const iterator = tasksPubsub.asyncIterator(TASK_UPDATED);
// Set initial task state in the iterator?
return iterator;
},
(payload, variables) => {
return payload.id === variables.input.id;
},
);
return cb.apply(null, args);
} catch (e) {
// handle error
debugger;
}
},
},
的读取,然后再进行query
的更新。