uni-app uniCloud.getTempFileURL 无效,fileID过长问题
uni-app uniCloud.getTempFileURL 无效,fileID过长问题
示例代码:
'use strict';
exports.main = async (event, context) => {
//event为客户端上传的参数
let result = uniCloud.getTempFileURL({
fileList: ['cloud://txtest511861636-1dd097.7478-txtest511861636-1dd097-1302270193/test-admin.jpeg']
});
result.then(res=>{
console.log(res)
})
let result2 = uniCloud.getTempFileURL({
fileList: ['cloud://test-28farb/a.png']
});
result2.then(res=>{
console.log(res)
})
//返回数据给客户端
return event
};
00:11:18.520 [本地运行:腾讯云:txtest511861636]本地运行云函数【test】...
00:11:18.520 [本地运行:腾讯云:txtest511861636]运行日志:
00:11:20.296 [本地运行]"云函数[test]执行结果:" {}
00:11:20.450 [本地运行]{"fileList":Array(1),"requestId":"17803285d5a_2"} uniCloud-tcb/cloudfunctions/test/index.js:14:10
00:11:21.170 [本地运行:腾讯云:txtest511861636]运行状态:成功
操作步骤:
见代码示例
预期结果:
打印result 和result 2的返回值
实际结果:
只打印了result 2的返回值
bug描述:
uniCloud.getTempFileURL 无效; fileID过长 ?详见代码示例
更多关于uni-app uniCloud.getTempFileURL 无效,fileID过长问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
如果不熟悉promise 可以换成 async+await 的方式 await MDN
更多关于uni-app uniCloud.getTempFileURL 无效,fileID过长问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
根据你的代码和日志分析,问题在于异步处理逻辑。uniCloud.getTempFileURL
返回的是Promise,但你在云函数中直接返回了event,没有等待这两个异步操作完成。
从日志可以看到:
- 云函数执行结果先返回了空对象
{}
- 随后才打印了result2的结果
- result1完全没有输出
这是因为云函数在return event
时就结束了执行,此时result1的Promise可能还在pending状态。
解决方案:
使用await
等待所有异步操作完成:
exports.main = async (event, context) => {
let result1 = await uniCloud.getTempFileURL({
fileList: ['cloud://txtest511861636-1dd097.7478-txtest511861636-1dd097-1302270193/test-admin.jpeg']
});
console.log('result1:', result1);
let result2 = await uniCloud.getTempFileURL({
fileList: ['cloud://test-28farb/a.png']
});
console.log('result2:', result2);
return {
result1,
result2
};
};
或者使用Promise.all
并行处理:
exports.main = async (event, context) => {
const [result1, result2] = await Promise.all([
uniCloud.getTempFileURL({
fileList: ['cloud://txtest511861636-1dd097.7478-txtest511861636-1dd097-1302270193/test-admin.jpeg']
}),
uniCloud.getTempFileURL({
fileList: ['cloud://test-28farb/a.png']
})
]);
console.log('result1:', result1);
console.log('result2:', result2);
return { result1, result2 };
};