我正在玩承诺,我遇到了异步递归承诺的问题。
场景是我需要检查函数内的令牌验证,如果令牌过期,我需要再次调用该函数。 以下是我到目前为止所做的代码:
module.exports={
frstFun:()=>{...
},
secondFun:(param)=>{
return new Promise((resolve,reject)=>{
request({
url:url+'myapi',
qs:{q:param,acc_token:token},
method:'GET',
},function(err,response,body){
if(error){
//here i need to call secondFun() method..
}
});
})
}
};
我尝试调用this.secondFun(),但是它给出了错误secondFun()不是方法。
答案 0 :(得分:0)
我不确定递归重试是否是执行此操作的最佳方法,但您可以将函数定义从exports
对象中拉出来:
let secondFun = (param) => {
return new Promise((resolve, reject) => {
request({
url: url + 'myapi',
qs: { q: param, acc_token: token },
method: 'GET',
}, function (err, response, body) {
if (err) {
// secondFun(...)
}
});
})
};
module.exports = {
frstFun: () => { ... },
secondFun: secondFun
};