Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在angularjs中,如何等待$resource请求的响应?_Javascript_Angularjs_Promise_Resources - Fatal编程技术网

Javascript 在angularjs中,如何等待$resource请求的响应?

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 (

我将告诉你一些我正在做的事情,这样你可以帮助我。我正在从.txt文件中读取一些记录,对于每条记录,我需要进行一些验证,为此,我向我的后端服务调用$resource以获取将用于验证每条记录的正则表达式。

我需要等待服务的响应。我有这个(我使用$追索权来获得with.factory):

我可以,成功地,在我需要的功能中使用它,比如:

//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);
        })