我正在使用fitbit-node模块与Fitbit集成。
我得到了一切工作,除了我坚持令牌刷新。
以下是fitbit刷新令牌代码:
refreshAccessToken: function (accessToken, refreshToken, expiresIn) {
if(expiresIn === undefined) expiresIn = -1;
var deferred = Q.defer();
var token = this.oauth2.accessToken.create({
access_token: accessToken,
refresh_token: refreshToken,
expires_in: expiresIn
});
console.log('got to token refresh')
token.refresh(function (error, result) {
if (error) {
deferred.reject(error);
console.log('got to token refresh error')
} else {
deferred.resolve(result);
console.log(result)
console.log('got to token refresh resolve')
}
});
return deferred.promise;
},
然后是then和catch语句。捕获声明似乎解雇但当时的情况从未发生过:
userfitbit2.refreshAccessToken(user[0].fitbitt, user[0].fitbitrt)
.then(function (results2) {
console.log(result2)
console.log('got here2')
const doc = {
fitbit: result2.user_id,
fitbitt: result2.access_token,
fitbitrt: result2.refresh_token,
fitbitlr: new Date.parse(result2.expires_at),
updatedAt: Date.now(),
};
User.update({ _id: userid }, doc, function (err, raw) {
if (err) {
}
});
})
.catch(err => console.log("error:", err.context.errors))
我想知道为什么承诺不会抛出当时的陈述。在其他地方工作。 promise promise之前和之后的console.log确实显示并正常工作。