uni-app uni.getProvider在最新版本不支持Promise

uni-app uni.getProvider在最新版本不支持Promise

项目信息 详情
产品分类 uniapp/小程序/微信
PC开发环境 Windows
操作系统版本号 windows11
HBuilderX类型 正式
HBuilderX版本号 4.45
第三方开发者工具版本号 1.06.2412050
基础库版本号 2.23.4
项目创建方式 HBuilderX

操作步骤:

uni.getProvider({ service: 'oauth' }).then(res => {
console.log('userLogin', res)
}).catch(err => {
console.error(err)
})

或者

const res = await uni.getProvider({ service: 'oauth' })
console.log('userLogin', res)

预期结果:

支持Promise方式

实际结果:

不支持

bug描述:

uni.getProvider在最新版本不支持Promise,如下写法:

uni.getProvider({ service: 'oauth' }).then(res => {
console.log('userLogin', res)
}).catch(err => {
console.error(err)
})

或者

const res = await uni.getProvider({ service: 'oauth' })
console.log('userLogin', res)

打印返回

userLogin undefined

更多关于uni-app uni.getProvider在最新版本不支持Promise的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

你好,是微信小程序出现的问题吗,我这里测试没有发现这个问题,还请您提供更详细的代码

更多关于uni-app uni.getProvider在最新版本不支持Promise的实战教程也可以访问 https://www.itying.com/category-93-b0.html


感谢回复,通过微信官方已经知道是小程序基础库的问题,当基础库低于3.0.2时才会出现这个问题

根据uni-app官方文档,uni.getProvider确实不支持Promise风格的调用方式。这个API采用的是传统的回调函数风格,需要按照以下方式使用:

uni.getProvider({
  service: 'oauth',
  success: (res) => {
    console.log('userLogin', res)
  },
  fail: (err) => {
    console.error(err)
  }
})

如果需要使用Promise风格,可以自行封装:

function getProviderPromise(options) {
  return new Promise((resolve, reject) => {
    uni.getProvider({
      ...options,
      success: resolve,
      fail: reject
    })
  })
}

// 使用示例
const res = await getProviderPromise({ service: 'oauth' })
回到顶部