刚刚在微信小程序开始用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{}
}
网友评论