uni.login({ provider: 'weixin', "onlyAuthorize": true, success(res) { console.log("这是1code",res.code) uni.request({ url:config.server.getopenid + res.code, method:"GET", success(res1) { console.log("登录",res1); } }) } })怎么变成异步的
时间: 2023-07-19 11:31:29 浏览: 185
你可以将 `uni.login` 方法的调用放在一个 `Promise` 中,将获取到的 code 作为 Promise 的 resolve 值返回,然后在外部通过 `await` 等待 Promise 的返回值,从而确保在获取到 code 之后再执行后续的操作。示例代码如下:
```
async function loginAndFetchData() {
return new Promise((resolve, reject) => {
uni.login({
provider: 'weixin',
onlyAuthorize: true,
success(res) {
console.log("这是1code", res.code)
uni.request({
url: config.server.getopenid + res.code,
method: "GET",
success(res1) {
console.log("登录", res1)
resolve(res.code) // 将 code 作为 Promise 的 resolve 值返回
},
fail(err) {
reject(err) // 请求失败时将错误信息作为 Promise 的 reject 值返回
}
})
},
fail(err) {
reject(err) // 登录失败时将错误信息作为 Promise 的 reject 值返回
}
})
})
}
// 在其他函数中调用 loginAndFetchData 并等待 code 的返回值
async function doSomething() {
try {
const code = await loginAndFetchData()
console.log('获取到的 code:', code)
// 根据获取到的 code 值进行后续操作
} catch (err) {
console.error('登录失败或请求接口失败:', err)
}
}
```
通过将 `uni.login` 调用封装在一个 Promise 中并返回 Promise,可以使得该方法变为异步方法,并通过使用 `await` 关键字等待 Promise 的返回值来确保在获取到最新的 code 值之后再执行后续操作。
阅读全文