@super-zuo/zuo-sync
v0.0.1
Published
Call async functions like sync! No await, no async — just zuoSync(fn)
Downloads
5
Maintainers
Readme
🚀 @super-zuo/zuo-sync — 让异步消失,让同步归来
Call async functions like sync! No
await, noasync, justzuoSync(fn)
彻底消除 JS 异步传染性,让你像写同步代码一样调用 fetch、axios、api.get() 等异步函数,无需改写现有代码结构,支持取消、缓存、并发控制。
🌟 特性
- ✅ 无 await/async 传染:
const user = zuoSync(api.get('/')) - ✅ 支持
AbortController取消 - ✅ 并发控制:相同请求不重复发起
- ✅ 自动缓存:默认 1 分钟 TTL
- ✅ 自动重试:默认 3 次,可配置
- ✅ TypeScript 支持:类型安全,智能提示
- ✅ Class 封装:支持高级配置与扩展
- ✅ 零依赖:纯 JS 实现,无第三方库
📦 安装
npm install @super-zuo/zuo-sync
# 或
yarn add @super-zuo/zuo-sync
import { zuoSync } from '@super-zuo/zuo-sync'
// 假设这是你的 API 函数
const api = {
get: (url: string) => fetch(url).then(r => r.json())
}
try {
// ✅ 直接同步调用!无 await/async
const user = zuoSync(() => api.get('https://jsonplaceholder.typicode.com/users/1'))
console.log('User name:', user.name) // ✅ 直接取值!
} catch (err) {
console.error('请求失败:', err)
}
高级功能(可选)
✅ 取消请求:传入 AbortController.signal
✅ 并发控制:相同 cacheKey 不重复请求
✅ 缓存配置:cacheTTL 控制缓存时间
✅ 自动重试:默认 3 次,可配置