小程序用async await实现同步出现问题?
发布于 7 年前 作者 wdu 9809 次浏览 来自 官方Issues
如图,finishTest函数调用getCompletionGrade函数,需要等待getCompletionGrade返回的结果,
从打印结果来看,finishTest中的async await并没有起作用,理想结果应该是打印“函数执行前、中、后”,
现在从打印的结果看,还是异步执行。已经设置了ES6转ES5和增强编译,如一些资料所说引入generator支持库
let regeneratorRuntime = require("../../utils/regenerator-runtime/runtime") 之后也是不行

2 回复
问题已解决,getCompletionGrade需要 return new Promise
修改getCompletionGrade如下:
// 根据传入的标准答案和用户答案,得到该空的相似度
  getCompletionGradefunction (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',
        },
        successfunction (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("文本相似度算法执行失败!")
          }
        },
        completefunction (res{
          wx.hideLoading()
        },
        fail(res) {
          reject(res)
        }
      })
      //=========微信的网络数据请求=========
    });
  },

你这wx.request就是个异步方法

回到顶部