Javascript 在angularjs中,如何等待$resource请求的响应?
我将告诉你一些我正在做的事情,这样你可以帮助我。我正在从.txt文件中读取一些记录,对于每条记录,我需要进行一些验证,为此,我向我的后端服务调用$resource以获取将用于验证每条记录的正则表达式。 我需要等待服务的响应。我有这个(我使用$追索权来获得with.factory): 我可以,成功地,在我需要的功能中使用它,比如:Javascript 在angularjs中,如何等待$resource请求的响应?,javascript,angularjs,promise,resources,Javascript,Angularjs,Promise,Resources,我将告诉你一些我正在做的事情,这样你可以帮助我。我正在从.txt文件中读取一些记录,对于每条记录,我需要进行一些验证,为此,我向我的后端服务调用$resource以获取将用于验证每条记录的正则表达式。 我需要等待服务的响应。我有这个(我使用$追索权来获得with.factory): 我可以,成功地,在我需要的功能中使用它,比如: //validar tipo 2 var bool = false; if (tipo == 2) { if (
//validar tipo 2
var bool = false;
if (tipo == 2) {
if (numbers.test(split[0]) && numbers.test(split[1])) {
$scope.number = '58';
findRegex().then(function(data) {
bool = true;
// console.log('data', data);
$scope.regexResponse = data;
regex_all = data.regex_all;
regex_length = data.regex_length;
regex_justCountry = data.regex_justCountry;
regex_justCarriers = data.regex_justCarriers;
console.log('1. regex_justCarriers ', regex_justCarriers);
console.log('1. regex_length ', regex_length);
});
//nothing here :( SOS
console.log('2. regex_justCarriers ', regex_justCarriers);
这是可行的,但是我需要等待响应才能继续我的代码,让我告诉你为什么(也许你可以给我一个更好的主意)
我无法生成findRegex()中的所有逻辑,首先是因为我不想每次从.txt中读取记录时都进行此调用。我想从服务中获取正则表达式一次,如果我正在检查的第一条记录对我来说是有效的记录,其他记录将使用我在第一次调用服务时已经获得的变量,还有其他原因,但主要是这样,我无法在其中生成所有需要的代码
我能做什么?您的函数
findRegex
返回的是承诺对象,而不是处理后的数据findRegex()。然后(…)
还会立即返回另一个承诺。您可以继续在第一个内完成所需的工作,也可以用另一个扩展承诺链。然后()。最后,但并非最不重要的一点是,您需要注意这样一个捕捉错误的可能性:
findRegex().then(function(data) {
bool = true;
// console.log('data', data);
$scope.regexResponse = data;
regex_all = data.regex_all;
regex_length = data.regex_length;
regex_justCountry = data.regex_justCountry;
regex_justCarriers = data.regex_justCarriers;
console.log('1. regex_justCarriers ', regex_justCarriers);
console.log('1. regex_length ', regex_length);
return data // just in case, if you need it later
}).then(function(data) {
console.log('2. regex_justCarriers ', regex_justCarriers);
}).catch(function(error) {
console.log('something went wrong', error);
})
非常感谢。我会立即添加捕获!!是否有其他方法返回已处理的数据?如果我添加了这行代码,它确实有效,但仍然存在相同的问题。非常感谢您对我的帮助:)!!!您可以使用AsyncWait,但我建议首先,尝试更深入地理解承诺是什么。开始
findRegex().then(function(data) {
bool = true;
// console.log('data', data);
$scope.regexResponse = data;
regex_all = data.regex_all;
regex_length = data.regex_length;
regex_justCountry = data.regex_justCountry;
regex_justCarriers = data.regex_justCarriers;
console.log('1. regex_justCarriers ', regex_justCarriers);
console.log('1. regex_length ', regex_length);
return data // just in case, if you need it later
}).then(function(data) {
console.log('2. regex_justCarriers ', regex_justCarriers);
}).catch(function(error) {
console.log('something went wrong', error);
})