uni-app 媒体 API 调用异常

问题描述

在 ios 系统下,若在一个网络请求的回调函数中调用 uni.chooseFileuni.chooseImage 等 API,那么浏览器将不会弹出文件选择框。

如以下这种情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
uni.request({
url: "",
method: "",
success: res => {
uni.chooseFile({});
}
})

// 或者
uni.request({
url: "",
method: ""
}).then(res => {
uni.chooseFile({})
})

解决方法

可以将媒体选择 API 的调用放在一个计时器中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uni.request({
url: "",
method: "",
success: res => {
setTimeout(() => {
uni.chooseFile({})
}, 100)
}
})

// 或者
uni.request({
url: "",
method: ""
}).then(res => {
setTimeout(() => {
uni.chooseFile({})
}, 100)
})