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

Callback is not a function when remote method recursively calls itself

我有下面的代码,当它被调用时,我得到一个错误,说回调不是回调的最后一个实例中的函数。 (回调("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 令牌或将 return 错误消息。

调用时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")
    }
  };