import util from 'util'; const setTimeoutPromise = util.promisify(setTimeout); export async function delay(time: number) { await setTimeoutPromise(time); console.log(`延迟${time}毫秒后执行`); } export async function retryAsync(func: () => Promise, x = 3, timeout = 10 * 1000) { let attempts = 0; while (attempts < x) { try { return await func(); } catch (error) { console.log(`第${attempts + 1}次尝试失败:${error}`); await delay(timeout); attempts++; } } throw new Error(`Async function failed after ${x} attempts.`); } export function getRandomUniqueElements(arr: any[], x: number): any[] { const result: any[] = []; const copyArr = arr.slice(); while (result.length < x && copyArr.length > 0) { const randomIndex = Math.floor(Math.random() * copyArr.length); result.push(copyArr.splice(randomIndex, 1)[0]); } return result; }