Javascript 调用服务时获取未定义的数据

Javascript 调用服务时获取未定义的数据,javascript,angularjs,Javascript,Angularjs,所以我有一个问题,几个小时来我一直想解决 我的问题是,我获取数据的速度比加载服务的速度快 发电机服务 function genEmpId() { settingsService.getSettings().then(function (data) { var comId = data.data[0].companyId; console.log(comId); var test = comId + ' - '; return test; });} 控制器 fun

所以我有一个问题,几个小时来我一直想解决

我的问题是,我获取数据的速度比加载服务的速度快

发电机服务

function genEmpId() {
settingsService.getSettings().then(function (data) {
    var comId = data.data[0].companyId;
    console.log(comId);
    var test = comId + ' - ';
    return test;
});}
控制器

function genId() {
   var data = genService.genEmpId();
   console.log(data); // getting the data too fast how to put a callback ?
}

因此,当我的控制器加载它调用的服务,但我得到一个未定义的返回值时。

试试这个,在你的代码中你没有返回任何东西,另一件事是它对你的异步调用必须等到它完成

// gen-service

function genEmpId() {
  return settingsService.getSettings().then(function (data) {
    var comId = data.data[0].companyId;
    console.log(comId);
    var test = comId + ' - ';
    return test;
  });
}

// controller

function genId() {
  var data = genService.genEmpId().then(function (data) {
    console.log(data);
  })
}

genEmpId
没有返回任何内容。只是一件小事,您的服务是否包含在控制器之前?我已经尝试过,它只适用于
$http
请求。您可以添加
设置服务。getSettings()
函数。您可以看到
getEmpId
函数并不是一个承诺。你怎么能等它解决呢@RahulSharma@UsmanRana我将从genEmpId函数返回另一个函数承诺。所以它会一直等到它解决。谢谢,我不知道它为什么有效??我错过了设置服务的第一次退货。对不起。