难就难在必须等网络请求结束后,再把结果export。可是uni.request是异步的,程序总是先执行uni.request代码块后面的代码,等到网络请求有结果了,再执行success里的代码。而这不是我们程序想要的,没有请求到url,只能不停的转圈,可是这个功能似乎很难实现。有大佬知道怎么实现吗?谢谢!如下代码,并不能保证最后一个console.log最后执行,怎么办?谢谢大佬
// 定义一个函数,用于执行HTTP请求
async function fetchRequest(url, data = {}, method = "GET") {
return new Promise((resolve, reject) => {
uni.request({
url: url, // 服务器url
method: method, // HTTP请求方法
data: data, // 请求的参数
success: (res) => {
resolve(res.data); // 请求成功
},
fail: (err) => {
reject(err); // 请求失败
}
})
})
}
// 使用async函数调用
async function fetchData() {
try {
// 等待fetchRequest函数的结果
let result = await fetchRequest('https://example.com/api/data', {param: 'value'}, 'GET');
console.log('请求结果:', result);
// 可以继续处理result
} catch (error) {
console.error('请求失败:', error);
// 错误处理
}
}
// 调用fetchData,像处理同步请求一样处理结果
fetchData();
console.log("期望这里最后执行。可是每次运行结果都是,这一句先执行,怎么办?")
1 个回复
爱豆豆 - 办法总比困难多
试试这两种方法 都能让console.log最后执行
第一种
第二种