Q承诺解决不是扔掉捕获

时间:2017-10-03 14:12:49

标签: javascript node.js q deferred

我正在使用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确实显示并正常工作。

0 个答案:

没有答案