日志里显示的结果都完成的,但是云函数执行超时
const cloud = require('wx-server-sdk')
const decodeImage = require("jimp").read;
const qrcodeReader = require("qrcode-reader");
// const QrCode = require('qrcode-reader');
// const Jimp = require('jimp');
cloud.init({
env: 'qun-6grsjea3162b771e',
})
exports.main = async (event, context) => {
const data = event.fileID // 从小程序端传递过来的文件ID
const code = await qrDecode(
data,
function (res) {
console.log(res, '啦啦啦啦');
}
);
async function qrDecode(data, callback) {
console.log('啦啦啦啦啦', callback, data)
await decodeImage(data, function (err, image) {
console.log('啊啊啊啊')
if (err) {
callback(false);
console.log(err)
return;
}
let decodeQR = new qrcodeReader();
decodeQR.callback = function (errorWhenDecodeQR, result) {
console.log('真真正正')
if (errorWhenDecodeQR) {
callback(false);
console.log(errorWhenDecodeQR, 3)
return;
}
if (!result) {
callback(false);
console.log(result, '2')
return;
} else {
callback(result.result);
console.log(result, '1')
return
}
};
decodeQR.decode(image.bitmap);
});
}
return code
}
求教该怎么优化代码,怎么解决超时问题
代码优化给不了建议,可以设置超时时间。
为了优化代码并解决超时问题,你可以尝试以下方法:
1. 使用`Promise.race()`来设置一个超时时间。这样,如果某个操作在指定的时间内没有完成,就会触发超时错误。
2. 将`qrcodeReader`的回调函数改为返回`Promise`,以便更好地处理异步操作。
下面是优化后的代码:
const cloud = require('wx-server-sdk') const decodeImage = require("jimp").read; const qrcodeReader = require("qrcode-reader"); cloud.init({ env: 'qun-6grsjea3162b771e', }) exports.main = async (event, context) => { const data = event.fileID // 从小程序端传递过来的文件ID const code = await qrDecode( data, function (res) { console.log(res, '啦啦啦啦'); } ); return code } async function qrDecode(data, callback) { console.log('啦啦啦啦', callback, data) await decodeImage(data, function (err, image) { console.log('啊啊啊啊') if (err) { callback(false); console.log(err) return; } let decodeQR = new qrcodeReader(); decodeQR.callback = function (errorWhenDecodeQR, result) { console.log('真真正正') if (errorWhenDecodeQR) { callback(false); console.log(errorWhenDecodeQR, 3) return; } if (!result) { callback(false); console.log(result, '2') return; } else { callback(result.result); console.log(result, '1') return } }; decodeQR.decode(image.bitmap); }); }
这样,你的代码应该能够更好地处理超时问题。如果仍然遇到超时问题,可以考虑进一步优化代码或增加服务器资源。
云函数本地调试,好像代码执行完成了,但是云函数还在执行导致超时