вернуть обещание из функции, вызванной в settimeout - PullRequest
0 голосов
/ 12 ноября 2018

Следующий код дает мне сообщение об ошибке getConfigDetails ... тогда это не функция. Я хочу вернуть обещание из функции getConfigDetails, если для переменной isConfigLoaded установлено значение true, в противном случае продолжайте вызывать его до тех пор, пока оно не будет.

var getConfigDetails = function () {
    if ($rootScope.isconfigloaded) {
        configDetails.roles = $rootScope.orgConfig.roles.slice();
        configDetails.departments = $rootScope.orgConfig.departments.slice();
        configDetails.levels = $rootScope.orgConfig.levels.slice();
        configDetails.designation = $rootScope.orgConfig.designation.slice();
        return Promise.resolve();
     } else {
        setTimeout(function(){
            getConfigDetails();
        },200);
     }
};

getConfigDetails().then(function(){});

1 Ответ

0 голосов
/ 12 ноября 2018

Вы можете сделать следующее:

var getConfigDetails = new Promise(function(resolve, reject){
  var ticker = setInterval(function(){
    if ($rootScope.isconfigloaded) {
        //the other stuff
        clearInterval(ticker);
        resolve();
    }
  }, 200);
});

Вы должны иметь возможность использовать его как getConfigDetails.then(function(){})

Обратите внимание, что это не функция, а просто обещание.Если вы действительно хотите, чтобы это была функция, сделайте следующее:

function getConfigDetails() {
  return new Promise(function(resolve, reject){
    var ticker = setInterval(function(){
      if ($rootScope.isconfigloaded) {
          //the other stuff
          clearInterval(ticker);
          resolve();
      }
    }, 200);
});
...