Обратный вызов не является функцией, когда удаленный метод рекурсивно вызывает себя - PullRequest
0 голосов
/ 21 мая 2019

У меня есть код ниже, когда он вызывается, я получаю сообщение об ошибке, в котором говорится, что обратный вызов не является функцией в последнем случае обратного вызова.(обратный вызов ("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 Ответ

2 голосов
/ 22 мая 2019

Подпись setToken и ResetToken не совпадает при звонке.

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")
    }
  };
...