Javascript AngularJS:异步方法外部的访问承诺回调
First console.log将返回该值。第二个控制台日志将返回Javascript AngularJS:异步方法外部的访问承诺回调,javascript,angularjs,Javascript,Angularjs,First console.log将返回该值。第二个控制台日志将返回未定义的。如何从方法外部获取变量?顺便说一句,我正在解决方法中的一个承诺。您可以通过使用或回调来实现这一点。但是你不能像你在一个线性过程中尝试的那样。了解异步JavaScript浏览器。这是一个例子 承诺 带回调函数 像这样的co和收益率。 您可以通过使用或回调来实现这一点。但是你不能像你在一个线性过程中尝试的那样。了解异步JavaScript浏览器。这是一个例子 承诺 带回调函数 像这样的co和收益率。 由于您的varb仅在承
未定义的。如何从方法外部获取变量?顺便说一句,我正在解决方法中的一个承诺。您可以通过使用或回调来实现这一点。但是你不能像你在一个线性过程中尝试的那样。了解异步JavaScript浏览器。这是一个例子
承诺
带回调函数
像这样的co和收益率。
您可以通过使用或回调来实现这一点。但是你不能像你在一个线性过程中尝试的那样。了解异步JavaScript浏览器。这是一个例子
承诺
带回调函数
像这样的co和收益率。
由于您的varb
仅在承诺解析后才能解析,因此您必须异步检索它。其中一种方法是可以使用回调
,如下所示。因此,当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);
}
});代码>由于您的varb
仅在承诺解析后才能解析,因此您必须异步检索它。其中一种方法是可以使用回调
,如下所示。因此,当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);
});
});