从settimeout中调用的函数返回promise

时间:2018-11-12 10:57:58

标签: javascript angularjs settimeout es6-promise

以下代码给我一个错误,指出getConfigDetails ...然后不是函数。如果getConfigDetails变量设置为true,我想从函数isConfigLoaded返回一个Promise,否则继续调用它,直到实现。

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 :(得分:0)

您可以执行以下操作:

    usernameCtrl =  this.fb.control('', [
        Validators.required,
        Validators.minLength(4),
        username
    ], this.checkUsername.bind(this));

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

一样使用它

请注意,它不是功能,只是一个承诺。如果您确实希望将其用作函数,请执行以下操作:

getConfigDetails.then(function(){})