远程方法递归调用自身时,回调不是函数

时间:2019-05-21 08:43:52

标签: loopbackjs loopback

我被调用时具有以下代码,但出现错误,提示回调不是最后一个回调实例中的函数。 (callback(“ UnabletoSetAcessToken”))

serviceOffering.ResetToken = function (retried, Data, options, callback) {
    var filterGetSH = 'Set Token';
    retried++;

    if (retried < 4) {
      if (Data.hasOwnProperty('Name')) {
        filterGetSH = { 'where': { 'Name': Data.Name } };
        serviceOffering.setToken(retried, Data, filterGetSH, options, function (error, dataBody) {
          if (error) {
            serviceOffering.ResetToken(retried, Data, filterGetSH, options, callback);
          } else {
            callback(null, dataBody);
          }
        });
      } else if (Data.hasOwnProperty('EntityId')) {
        filterGetSH = { 'where': { 'EntityId': entityData.EntityId } };
        serviceOffering.setToken(retried, Data, filterGetSH, options, function (error, dataBody) {
          if (error) {
            serviceOffering.ResetToken(retried, Data, filterGetSH, options, callback);
          } else {
            callback(null, dataBody);
          }
        });
      }
    } else {
        callback("UnabletoSetAcessToken")
    }
  };

我希望如果不成功时已达到最大重试次数,则会调用该回调。我无法理解这里出了什么问题以及如何解决这个问题。 注意:-这里的setToken是一种不同的远程方法,当成功使用Oauth令牌时,它将返回错误消息。

1 个答案:

答案 0 :(得分:2)

呼叫时setTokenResetToken的签名不匹配。

serviceOffering.ResetToken = function (retried, Data, options, callback) {
    var filterGetSH = 'Set Token';
    retried++;

    if (retried < 4) {
      if (Data.hasOwnProperty('Name')) {
        filterGetSH = { 'where': { 'Name': Data.Name } };
        options.filter = filterGetSH;
        serviceOffering.setToken(retried, Data, options, function (error, dataBody) {
          if (error) {
            serviceOffering.ResetToken(retried, Data, options, callback);
          } else {
            callback(null, dataBody);
          }
        });
      } else if (Data.hasOwnProperty('EntityId')) {
        filterGetSH = { 'where': { 'EntityId': Data.EntityId } };
        options.filter = filterGetSH;
        serviceOffering.setToken(retried, Data, options, function (error, dataBody) {
          if (error) {
            serviceOffering.ResetToken(retried, Data, options, callback);
          } else {
            callback(null, dataBody);
          }
        });
      }
    } else {
        callback("UnabletoSetAcessToken")
    }
  };