为什么这段函数中的textStr是undefined? 请修复下面这段代码:checkmsgSec: async function (e) { let that = this let v = e.detail.value let textStr = ''; this.editorCtx.getContents({ success(res) { const htmlStr = res.html; textStr = htmlStr.replace(/<\/?[^>]*>/g, ''); }, fail(err) { console.error(err); } }); 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)
时间: 2024-01-25 19:05:23 浏览: 80
ASP常用函数:ReplaceHTML
这段代码中的 `textStr` 是 `undefined`,是因为 `this.editorCtx.getContents()` 是一个异步函数,需要等待回调函数中的代码执行完成后才能获取到返回值。但是在获取返回值之前,程序会继续执行下面的代码,导致 `textStr` 的值还没有被赋值。可以把 `wx.cloud.callFunction()` 的调用放到 `success` 回调函数中,这样就可以确保 `textStr` 值已经被赋值了。修改后的代码如下:
```
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, '');
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)
},
fail: (err) => {
console.error(err);
}
});
},
fail(err) {
console.error(err);
}
});
}
```
这样修改后,可以保证 `textStr` 的值已经被正确赋值,并且在调用云函数时一起传递。
阅读全文