Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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 回调函数$http请求angularjs_Javascript_Angularjs_Asynchronous_Callback - Fatal编程技术网

Javascript 回调函数$http请求angularjs

Javascript 回调函数$http请求angularjs,javascript,angularjs,asynchronous,callback,Javascript,Angularjs,Asynchronous,Callback,我是angularjs新手,尝试将http请求函数中的数据分配给$scope变量。但是由于异步,这行代码console.log($scope.field\u result\u var)将在请求完成之前执行 app.controller('my_control', function($scope, $http) { $scope.field_result_var =''; $scope.check_field_http = function()

我是angularjs新手,尝试将http请求函数中的数据分配给$scope变量。但是由于异步,这行代码console.log($scope.field\u result\u var)将在请求完成之前执行

app.controller('my_control', function($scope, $http) {

        $scope.field_result_var  ='';       

        $scope.check_field_http = function() {
            $http({
                    method: 'GET',
                    url: 'aaa.php',
                    params : {field:$scope.field_data}
                    }).then(function successCallback(response) {
                            $scope.field_result_var  = response.data;

                     }, function errorCallback(response) {

                     });
        };


        $scope.check_field = function() {
            $scope.check_field_http ();

            //below is code need to execute after get the data like
            console.log($scope.field_result_var  );     
        };


});
app.controller('my_control', function($scope, $http) {

        $scope.field_result_var  ='';       

        $scope.check_field_http = function() {
            $http({
                    method: 'GET',
                    url: 'aaa.php',
                    params : {field:$scope.field_data}
                    }).then(function successCallback(response) {
                            myCallbackFunction(response);

                     }, function errorCallback(response) {

                     });
        };


        $scope.check_field = function() {
            $scope.check_field_http ();

            //below is code need to execute after get the data like
            console.log($scope.field_result_var);       
        };

       function myCallbackFunction(response_param) {
            $scope.field_result_var  = response_param.data; 
        }
});
我曾尝试根据中的答案使用回调函数,但我可能错误地实现了回调函数,因此console.log($scope.field\u result\u var)仍会在请求完成之前执行

app.controller('my_control', function($scope, $http) {

        $scope.field_result_var  ='';       

        $scope.check_field_http = function() {
            $http({
                    method: 'GET',
                    url: 'aaa.php',
                    params : {field:$scope.field_data}
                    }).then(function successCallback(response) {
                            $scope.field_result_var  = response.data;

                     }, function errorCallback(response) {

                     });
        };


        $scope.check_field = function() {
            $scope.check_field_http ();

            //below is code need to execute after get the data like
            console.log($scope.field_result_var  );     
        };


});
app.controller('my_control', function($scope, $http) {

        $scope.field_result_var  ='';       

        $scope.check_field_http = function() {
            $http({
                    method: 'GET',
                    url: 'aaa.php',
                    params : {field:$scope.field_data}
                    }).then(function successCallback(response) {
                            myCallbackFunction(response);

                     }, function errorCallback(response) {

                     });
        };


        $scope.check_field = function() {
            $scope.check_field_http ();

            //below is code need to execute after get the data like
            console.log($scope.field_result_var);       
        };

       function myCallbackFunction(response_param) {
            $scope.field_result_var  = response_param.data; 
        }
});
很抱歉,我这里没有什么问题,有些可能是angularjs的一般概念:

1) 为了确保在$http请求成功后执行console.log,我在回调实现中犯了哪些错误

2) 如果我定义了回调函数,比如,如何为我的案例调用它

 $scope.myCallbackFunction = function (response_param) {
            $scope.field_result_var  = response_param.data; 
        }
3) 两者的区别是什么

  $scope.myCallbackFunction = function (response_param) {
            $scope.field_result_var  = response_param.data; 
        }

在angularjs

(四) 搜索解决方案时,我看到人们在myApp.factory中创建http请求,就像


使用myApp.factory创建函数与使用scope.function\u name=function()创建函数有何不同?在这个问题中,你问了很多问题。让我们从结尾开始,向后看,因为你在底部问了一些高层次的问题

使用myApp.factory创建函数有什么区别 vs使用$scope.function\u name=function()创建函数

在AngularJS中,有一个服务的概念,它是用于封装特定功能的可注入代码块。为了让事情变得更加混乱,有一些特定类型的服务具有自己的语法。您可以使用.factory()、.provider()或.service(),但它们都提供了一个放置业务逻辑的位置,这与您可能在控制器中放置的位置几乎相同(在Angular 2中,它们都整合在“服务”中)

4) 在搜索解决方案时,我看到人们在myApp.factory中创建http请求,比如如何等待响应来自angularjs中的$http请求

主组件(或控制器)的职责应该是保存数据,以便视图能够显示数据。调用http请求不应该出现在您的控制器中,因为这样它会变得很大和臃肿一般的经验法则是:使用提供一个主服务的“助手”服务,尽可能精简控制器。

3) 两者的区别是什么

$scope.myCallbackFunction=函数(响应参数){ $scope.field\u result\u var=响应参数数据; }及

函数myCallbackFunction(响应参数){ $scope.field\u result\u var=响应参数数据; }在angularjs

您在这里要问的概念是,对于AngularJS甚至JavaScript来说,这并不是唯一的概念。匿名函数没有名称。这些在JavaScript开发中非常常见,尤其是异步操作的回调。对于解释代码的计算机来说没有区别,但是匿名函数使用更少的字符、更少的行,并且您不需要到处寻找回调函数<作为一个一般的经验法则:如果您从未真正调用函数的名称,请考虑将其命名为匿名。< /强>

2) 如果我定义了回调函数,比如,如何为我的 案子

$scope.myCallbackFunction=函数(响应参数){ $scope.field\u result\u var=响应参数数据; }

您已将函数定义为名为$scope.myCallbackFunction的变量的值。所以你可以这样做:

    $scope.check_field_http = function() {
        $http({
            method: 'GET',
            url: 'aaa.php',
            params : {field:$scope.field_data}
            }).then(
                 $scope.myCallbackFunction, 
                 $scope.myCallbackFunction
            );
        };

现在,回答你最初的问题,“这里的错误是什么?”。似乎console.log语句出现在$scope.check_字段函数中。异步请求在JavaScript中是非阻塞的,因此$scope.check\u field\u http将运行并发送其请求。然后,解释器将继续单步执行代码,在发送请求后立即执行log语句,但不等待响应返回。如果希望console.log语句在请求返回后出现,则应将其移动到名为myCallbackFunction

的函数体中。在这个问题中,您要问的问题很多。让我们从结尾开始,向后看,因为你在底部问了一些高层次的问题

使用myApp.factory创建函数有什么区别 vs使用$scope.function\u name=function()创建函数

在AngularJS中,有一个服务的概念,它是用于封装特定功能的可注入代码块。为了让事情变得更加混乱,有一些特定类型的服务具有自己的语法。您可以使用.factory()、.provider()或.service(),但它们都提供了一个放置业务逻辑的位置,这与您可能在控制器中放置的位置几乎相同(在Angular 2中,它们都整合在“服务”中)

4) 在搜索解决方案时,我看到人们在myApp.factory中创建http请求,比如如何等待响应来自angularjs中的$http请求

主组件(或控制器)的职责应该是保存数据,以便视图能够显示数据。调用http请求不应该出现在您的控制器中,因为这样它会变得很大和臃肿一般的经验法则是:使用提供一个主服务的“助手”服务,尽可能精简控制器。

3) 两者的区别是什么

$scope.myCallbackFunction=函数(响应参数){