找到 BUG 所在了, 逻辑是拿到 staticData 的最后一条的 id , 然后再循环 RSS 的 item 列表去匹配这个 id , 将这个 id 前的 item 都给发过来。
例如 items = [ 5, 4, 3, 2, 1 ], lastItemId = 3, 那么此时我就会将 5 4 这两个以 4 5 的顺序发出来。 然后更新 lastItemId 为 5。
而昨天的问题在于, xlog 的 RSS 不稳定, 时而是 [ 5, 4, 3, 2, 1 ], 时而是 [ 4, 3, 2, 1 ]。
就导致从 [ 5, 4, 3, 2, 1 ] 到 [ 4, 3, 2, 1 ] 的过程中,因为找不到 5 的 id, 所以直接将 1 2 3 4 发出来了。
所以昨晚深夜就是不断地在 1 2 3 4 + 5 这样在发~~
#事出反常必有妖
例如 items = [ 5, 4, 3, 2, 1 ], lastItemId = 3, 那么此时我就会将 5 4 这两个以 4 5 的顺序发出来。 然后更新 lastItemId 为 5。
而昨天的问题在于, xlog 的 RSS 不稳定, 时而是 [ 5, 4, 3, 2, 1 ], 时而是 [ 4, 3, 2, 1 ]。
就导致从 [ 5, 4, 3, 2, 1 ] 到 [ 4, 3, 2, 1 ] 的过程中,因为找不到 5 的 id, 所以直接将 1 2 3 4 发出来了。
所以昨晚深夜就是不断地在 1 2 3 4 + 5 这样在发~~
const staticData = getWorkflowStaticData('global');
const lastItemId = staticData.lastItemId;
...
if (lastItemId) {
for (const item of items) {
if (getId(item) === lastItemId) {
break;
}
newItems.push(item)
}
} else {
newItems = [firstItem]
}
...
return newItems.reverse()
#事出反常必有妖