import { get } from '../utils/request'; import { PostDetail } from './type'; import { RequestTaskQueue } from './fetch-post'; const postDetailRequestTaskQueue = new RequestTaskQueue< { permalink: string }, PostDetail >(async ( permalinks: { permalink: string }[] ) => { const res: any = await get( '//www.lofter.com/spread/copyright/posts.json', { 'permalinks': permalinks.map(({ permalink }) => permalink).join(',') } ) const postsIdMap = res.data.posts.reduce((idMap, post) => { idMap[post.permalink] = post; return idMap; }, {}); return permalinks.map(({ permalink }) => postsIdMap[permalink]); }, 50); export function fetchPostPermaLinksDetail(permalink: string) { return new Promise((resolve) => { postDetailRequestTaskQueue.add({ data: { permalink }, callback: resolve }) }) }