【发布时间】:2019-04-15 02:05:42
【问题描述】:
以下代码给我一个错误,指出getConfigDetails...then 不是函数。如果isConfigLoaded 变量设置为true,我想从函数getConfigDetails 返回一个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(){});
【问题讨论】:
-
改用
return $timeout(...),它返回一个Promise。也可以尝试使用$q服务作为 Promises -
从超时做出一个承诺,然后链使用
then对它的getConfigDetails调用 -
@Bergi 你能举个例子解释一下吗?
-
@ManavChawla
new Promise(resolve => setTimeout(resolve, 200)).then(getConfigDetails)是一个承诺链,你可以return -
@Bergi 我不确定我是否关注。
标签: javascript angularjs settimeout es6-promise