const updateNode = async (node: TCartType) => {
const res = await postUpdateNode({
id,
name,
type: 'NODE',
data: node,
version: store.version + 1,
})
store.version = res.data.version
}
这个方法会被多次调用,就会发出多个请求,这时候就不能保证哪个先成功了,但是必须要顺序执行,请问怎么能做到按照调用的顺序执行成功后再执行下一个,如果这个时候又进来,放到队列最后,类似先进先出执行完成
你看,你都提到了“队列”,所以解决这个问题就是用队列啊。基本思路就是,
而处理的时候,会依次 await 调用队列中封装的每一次行为,直到处理完。考虑到有可能在处理过程中被触发,所以要加一个标志来判断是否在处理中,如果已经在处理中,就不管了,否则启动处理过程。
示意代码(仅示例,没测试)