小程序用async await实现同步出现问题?
如图,finishTest函数调用getCompletionGrade函数,需要等待getCompletionGrade返回的结果,
从打印结果来看,finishTest中的async await并没有起作用,理想结果应该是打印“函数执行前、中、后”,
现在从打印的结果看,还是异步执行。已经设置了ES6转ES5和增强编译,如一些资料所说引入generator支持库
let regeneratorRuntime = require("../../utils/regenerator-runtime/runtime") 之后也是不行
2 回复
问题已解决,getCompletionGrade需要 return new Promise
修改getCompletionGrade如下:
// 根据传入的标准答案和用户答案,得到该空的相似度
getCompletionGrade: function (reference_answer, user_answer) {
return new Promise(function (resolve, reject) {
//=========微信的网络数据请求=========
wx.showLoading({
title: '正在计算得分',
})
wx.request({
url: "http://localhost:8080" + '/answer/getCompletionGrade',
data: {
reference_answer: reference_answer,
user_answer: user_answer
},
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded',
},
success: function (res) {
console.log("函数执行中:res.data.data:" + res.data.data)
if (res.data.errcode == 0) {
resolve(res.data.data)
// return res.data.data
} else {
console.log("文本相似度算法执行失败!")
}
},
complete: function (res) {
wx.hideLoading()
},
fail(res) {
reject(res)
}
})
//=========微信的网络数据请求=========
});
},