收藏
回答

小程序用async await实现同步出现问题?

如图,finishTest函数调用getCompletionGrade函数,需要等待getCompletionGrade返回的结果,
从打印结果来看,finishTest中的async await并没有起作用,理想结果应该是打印“函数执行前、中、后”,
现在从打印的结果看,还是异步执行。已经设置了ES6转ES5和增强编译,如一些资料所说引入generator支持库
let regeneratorRuntime = require("../../utils/regenerator-runtime/runtime") 之后也是不行

最后一次编辑于  2020-03-21
回答关注问题邀请回答
收藏

2 个回答

  • 啦啦啦
    啦啦啦
    2020-03-21
    问题已解决,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)
            }
          })
          //=========微信的网络数据请求=========
        });
      },
    
    2020-03-21
    有用
    回复
  • LeeJim🌀
    LeeJim🌀
    2020-03-21

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

    2020-03-21
    有用
    回复
登录 后发表内容
问题标签