0.3.2 • Published 4 months ago

uniapp-promisify v0.3.2

Weekly downloads
-
License
AGPL-3.0
Repository
github
Last release
4 months ago

NPM Version NPM Downloads Build GitHub issues GitHub pull requests GitHub License

English | 简体中文

初衷

UniApp 官方的 API 使用的是过时的回调风格,尽管最新版本的 UniApp 的部分 API 支持了 Promise 的调用,但官方 API 的类型并没有对其支持,更糟糕的是官方的 Promise 调用方式在 Vue 2 和 Vue 3 中的行为不同

与其手动处理多个平台的条件判断和类型转换,不如直接对官方的回调 API 进行简单的包装,将回调函数转换为 Promiseresolvereject,并自动推断返回类型。

安装

npm install uniapp-promisify
# Or use yarn
yarn add uniapp-promisify
# Or use pnpm
pnpm i uniapp-promisify

使用

uniapp-promisify 导出了一个名为 promisify 的函数,可以按照以下方式使用:

  • Promise 化单个函数
import { promisify } from 'uniapp-promisify'

const login = promisify(uni.login)
const res = await login()
//     ^? UniNamespace.LoginRes
  • Promise 化整个 uni 全局对象
import { promisify } from 'uniapp-promisify'

const pUni = promisify(uni)
const res = await pUni.login()
//     ^? UniNamespace.LoginRes
  • 直接使用 uniapp-promisify 中已经 Promise 化的 uni 对象
import { uni } from 'uniapp-promisify'

同步 API

由于在一些情况下无法使用异步方式调用,因此当使用被 Promise 化的 uni 全局对象时,可以通过 uni.sync 属性映射到原本的没有被包装过的 uni 对象。

import { uni } from 'uniapp-promisify'

// uni.getUserProfile() 只能在同步函数中调用
const res = uni.sync.getUserProfile()

许可证

本项目使用 AGPL-3.0 许可证 - 有关详细信息,请参阅 LICENSE 文件。

0.3.0

4 months ago

0.2.1

4 months ago

0.3.2

4 months ago

0.3.1

4 months ago

0.2.0

1 year ago

0.1.1

2 years ago

0.1.0

2 years ago