在 angular 中使用 lb-services 计数服务
Using lb-services count servcie in angular
我在 angular 使用 lbservices 中使用以下代码,我想获取计数值,但我没有输出 a1=8 和 a2=8,而是得到 a1=8 的结果和 a2=2,
var getOrganisationCount = function () {
var count = 2;
var query = {};
Organisation
.count()
.$promise
.then(function (response) {
count = response.count;
console.log('a1===' + count);
});
console.log('a2=' + count);
};
getOrganisationCount();
因为一旦收到异步调用的响应就会打印 a1 值,而 a2 会立即打印。
当收到服务器响应时调用 then
回调中的代码,而其他代码按顺序执行。
更新: 由于您正在使用 promise,因此您应该 return 从函数调用中 promise,然后调用者可以解析。
var getOrganisationCount = function() {
var count = 2;
var query = {};
return Organisation
.count()
.$promise
.then(function(response) {
count = response.count;
console.log('a1===' + count);
return count;
});
};
getOrganisationCount().then(function(count) {
console.log('a2=' + count);
});
记下函数现在 return 是一个 promise 而不是 count
您的 getOrganisationCount
函数正在对您在 application.This 网络调用中拥有的组织模型进行网络调用 Organisation.count().$promise
是一个异步调用,then
中的代码一旦你从服务器得到响应,块将被执行,即:当异步操作完成时。
但是代码 console.log('a2=' + count)
不在 then
块内,它将在响应来自您的服务器之前执行。由于 count
的值最初为 2,因此您得到的输出为 2,而第二个
响应后 运行s 的控制台语句,它的值得到更新,你得到的输出为 8.
如果你 运行 你的代码,你会看到 console.log('a2=' + count)
先输出然后 console.log('a1===' + count)
这证明了我上面解释的内容。
如果您想更多地了解异步函数的工作原理,可以阅读这篇详尽的描述SO answer。
我在 angular 使用 lbservices 中使用以下代码,我想获取计数值,但我没有输出 a1=8 和 a2=8,而是得到 a1=8 的结果和 a2=2,
var getOrganisationCount = function () {
var count = 2;
var query = {};
Organisation
.count()
.$promise
.then(function (response) {
count = response.count;
console.log('a1===' + count);
});
console.log('a2=' + count);
};
getOrganisationCount();
因为一旦收到异步调用的响应就会打印 a1 值,而 a2 会立即打印。
当收到服务器响应时调用 then
回调中的代码,而其他代码按顺序执行。
更新: 由于您正在使用 promise,因此您应该 return 从函数调用中 promise,然后调用者可以解析。
var getOrganisationCount = function() {
var count = 2;
var query = {};
return Organisation
.count()
.$promise
.then(function(response) {
count = response.count;
console.log('a1===' + count);
return count;
});
};
getOrganisationCount().then(function(count) {
console.log('a2=' + count);
});
记下函数现在 return 是一个 promise 而不是 count
您的 getOrganisationCount
函数正在对您在 application.This 网络调用中拥有的组织模型进行网络调用 Organisation.count().$promise
是一个异步调用,then
中的代码一旦你从服务器得到响应,块将被执行,即:当异步操作完成时。
但是代码 console.log('a2=' + count)
不在 then
块内,它将在响应来自您的服务器之前执行。由于 count
的值最初为 2,因此您得到的输出为 2,而第二个
响应后 运行s 的控制台语句,它的值得到更新,你得到的输出为 8.
如果你 运行 你的代码,你会看到 console.log('a2=' + count)
先输出然后 console.log('a1===' + count)
这证明了我上面解释的内容。
如果您想更多地了解异步函数的工作原理,可以阅读这篇详尽的描述SO answer。