checkmsgSec: async function (e) { let that = this let v = e.detail.value this.editorCtx.getContents({ success(res) { const htmlStr = res.html; let textStr = htmlStr.replace(/<\/?[^>]*>/g, ''); await wx.cloud.callFunction({ name: 'checkmsgSec', data: { openid: that.openid, text: v.carmodelname+v.namea+v.nameb+v.title+v.explain+v.explain2+v.explain3+textStr, }, success: (res) => { console.log(res) if (res.result.errCode === 0) { if ( res.result.result.label === 100 ) { console.log('合法文本') that.updateProductInfo(e) } else { wx.showToast({ title: "你输入的文本涉及敏感信息,请检查删除,重新输入!", icon: "none", duration: 5000, }); } } else { console.log('其他异常') } }, fail: () => { console.log('处理失败') } }) }, fail(err) { console.error(err); } }); },这段代码存在哪些问题?请分析指出,并把正确的代码发给我
时间: 2024-01-16 08:02:53 浏览: 71
Vue中this.$nextTick的作用及用法
5星 · 资源好评率100%
这段代码存在以下问题:
1. `await` 关键字只能在 `async` 函数中使用,但是在 `success` 回调函数中使用了 `await`,导致代码报错。
2. `wx.cloud.callFunction()` 也是一个异步函数,需要使用 `await` 关键字等待云函数执行完成后再继续执行下面的代码,但是没有使用 `await` 等待函数执行完成。
3. 在 `fail` 回调函数中没有进行错误处理。
正确的代码如下:
```
checkmsgSec: async function (e) {
let that = this
let v = e.detail.value
try {
const res = await this.editorCtx.getContents()
const htmlStr = res.html;
let textStr = htmlStr.replace(/<\/?[^>]*>/g, '');
const checkRes = await wx.cloud.callFunction({
name: 'checkmsgSec',
data: {
openid: that.openid,
text: v.carmodelname + v.namea + v.nameb + v.title + v.explain + v.explain2 + v.explain3 + textStr,
},
});
console.log(checkRes)
if (checkRes.result.errCode === 0) {
if (checkRes.result.result.label === 100) {
console.log('合法文本')
that.updateProductInfo(e)
} else {
wx.showToast({
title: "你输入的文本涉及敏感信息,请检查删除,重新输入!",
icon: "none",
duration: 5000,
});
}
} else {
console.log('其他异常')
}
} catch (err) {
console.error(err);
console.log('处理失败')
}
},
```
修改后的代码中使用了 `try-catch` 语句进行错误处理,使用 `await` 关键字等待异步函数执行完成后再继续执行下面的代码。
阅读全文