Javascript AngularJS:异步方法外部的访问承诺回调

Javascript AngularJS:异步方法外部的访问承诺回调,javascript,angularjs,Javascript,Angularjs,First console.log将返回该值。第二个控制台日志将返回未定义的。如何从方法外部获取变量?顺便说一句,我正在解决方法中的一个承诺。您可以通过使用或回调来实现这一点。但是你不能像你在一个线性过程中尝试的那样。了解异步JavaScript浏览器。这是一个例子 承诺 带回调函数 像这样的co和收益率。 您可以通过使用或回调来实现这一点。但是你不能像你在一个线性过程中尝试的那样。了解异步JavaScript浏览器。这是一个例子 承诺 带回调函数 像这样的co和收益率。 由于您的varb仅在承

First console.log将返回该值。第二个控制台日志将返回
未定义的
。如何从方法外部获取变量?顺便说一句,我正在解决方法中的一个承诺。

您可以通过使用或回调来实现这一点。但是你不能像你在一个线性过程中尝试的那样。了解异步JavaScript浏览器。这是一个例子

承诺 带回调函数 像这样的co和收益率。
您可以通过使用或回调来实现这一点。但是你不能像你在一个线性过程中尝试的那样。了解异步JavaScript浏览器。这是一个例子

承诺 带回调函数 像这样的co和收益率。
由于您的var
b
仅在承诺解析后才能解析,因此您必须异步检索它。其中一种方法是可以使用
回调
,如下所示。因此,当promise被解析时,
b
将通过
回调函数返回

函数graphreport(代理列表,回调){
var b;
var self=这个;
agentList.getAgentsList()
.then(功能(数据){
self.agents=data.data.users;
log(data.data.users.length);
b=data.data.users.length;
//返回回调方法
返回回调(null,b);
});
}
graphreport(列表,函数(错误,b){
如果(!err){
控制台日志(b);
}

});由于您的var
b
仅在承诺解析后才能解析,因此您必须异步检索它。其中一种方法是可以使用
回调
,如下所示。因此,当promise被解析时,
b
将通过
回调函数返回

函数graphreport(代理列表,回调){
var b;
var self=这个;
agentList.getAgentsList()
.then(功能(数据){
self.agents=data.data.users;
log(data.data.users.length);
b=data.data.users.length;
//返回回调方法
返回回调(null,b);
});
}
graphreport(列表,函数(错误,b){
如果(!err){
控制台日志(b);
}

});请显示所有相关代码。您不能在范围之外使用它。。它是异步的。。您的外部console.log可能在内部console.log之前被调用agentList中有什么?agentList是我进行API调用的服务名称。我需要使用作用域之外的变量来生成图形/图表。有其他方法吗?请显示所有相关代码。您不能在范围之外使用它。。它是异步的。。您的外部console.log可能在内部console.log之前被调用agentList中有什么?agentList是我进行API调用的服务名称。我需要使用作用域之外的变量来生成图形/图表。有别的办法吗?@punithgowda这对你有用吗?你也许会找到正确的答案?@punithgowda这对你有用吗?你也许会记下正确的答案?
function graphreport(agentList) {

    var b;
    var self = this;

    agentList.getAgentsList().then(function (data) {
        self.agents = data.data.users;
        console.log(data.data.users.length);
        b = data.data.users.length;
    });

    console.log(b);
}
function graphreport(agentList) {

    var b;
    var self = this;
    var deferred = $q.defer();
    var promise = deferred.promise;

    agentList.getAgentsList().then(function (data) {
        self.agents = data.data.users;
        console.log(data.data.users.length);
        b = data.data.users.length;
        deferred.resolve(data.data.users.length);
    });

    promise.then(function (b) {
        console.log(b);
    });
}
function graphreport(agentList) {

    var self = this;

    agentList.getAgentsList().then(function (data) {
        self.agents = data.data.users;
        console.log(data.data.users.length);
        myCallack(data.data.users.length);
    });

    function myCallack(b) {
      console.log(b);
    }
}
var myApp = angular.module('myApp',[]);

myApp.controller('MyCtrl', function ($timeout, $q) {

   co(function *() {
     var deferred = $q.defer();
     var promise = deferred.promise;

     function someAsync() {
        $timeout(function () {
              deferred.resolve('test');
        }, 250);
     }

     someAsync();
     var b = yield promise;
     console.log(b);
   });
});