Promise xxx is not a function

刚刚在微信小程序开始用Promise,一直报错'handleResult is not a function'

var  manager = {
  handleResult: function(e){
      //...
  }

   request: function(({ api, data, method}) {
    let _this = this
    ...
    return new Promise(function(resolve, reject){
      wx.request({
        url: baseUrl + api,
        data: data,
        method: method,
        success: function (e) {
          _this.handleResult(e)
          resolve({suc: true, res: e})
        },
        fail: function (e) {
          resolve({suc: false, res: e})
        },
        complete: res => {},
        header: {
          ...
        }
      })
    })
  }
}

查了好多错误原因,基本都是讲this指向问题,但我即使排除this问题,它依然报错!
而且很邪门的,我看别人写的demo和我的‘一模一样’,别人的代码调用外部function完全没问题!
我还特地看了一下别人demo有没有export,没有!
但是,搞了半天之后我试着加上export handleResult,成功了!!!
原来,我的js代码都被包括在了一个对象manager{}里面!demo里面是没有这个外部对象的,
所以导致出现这个问题。

module.exports = {
  ...
  handleResult: manager.handleResult,
  ...
}

注意async的位置,function样式不同,async的位置也不同:

async requestFunc1() {
  let prs = await httpAsync.request({'api/dosomething',  {id: '1'}, 'GET'})
  if (prs.suc){}else{}
}
requestFunc2: async function() {
  let prs = await httpAsync.request({'api/dosomething',  {id: '1'}, 'GET'})
  if (prs.suc){}else{}
}

你可能感兴趣的:(Promise xxx is not a function)