如何在返回语句后解决这个"无法访问的代码"警告?

时间:2018-01-11 20:50:20

标签: javascript angularjs angular-ui-router

我正在尝试学习angularjs的基础知识,并正在使用教程应用程序和ng-js v1.6.6。虽然这些项目显示(localhost),但浏览器会在screengrab中显示警告。 Chrome没有显示错误 - Firefox的错误。代码是否正常或第17行/第50行是否有错误?

   'use strict';

    angular.module('components.phone')
    .factory('Phone', ['$resource', function($resource,) {
    return $resource('components/phone/data/phones/:phoneId.json', {}, { 
        query: {
            method:'GET', 
            params: { phoneId:'phones' },
            isArray: true
            }
        }
      )    

     return factory;//<======LINE 17 -IS THE REST OF THE CODE 'UNREACHABLE'?
     }])

.service('PhoneService', ['$q','$http', '$resource', function($q, $http) {
    var service = { 
        get: function() {
            var deferred = $q.defer();

            $http.get('components/phone/data/phones/phones.json', { 
                params: { phoneId:'phones' } 
            })
            .then(function(response){
                deferred.resolve(response.data);
            })
            .catch(function(response){
                deferred.resolve(response);
            });

            return deferred.promise;
        },

        getAllPhones: function() {
            return $http.get('components/phone/data/phones/:phoneId.json', { 
                cache:   true }
            ).then(function(resp) {
                return resp.data;
            });
        },

        getPhone: function(phoneId) {
                for (i = 0; i < phones.length; i++) {
                    if(phones[i].id == phoneId){
                    this.phone = phones[i];
                     break; <==== THIS SYNTAX IS NOW CHANGED, THANKS@SYNCRO!


        return  $http.get('components/phone/data/phones/' +    $stateParams.phoneId + '.json')
                    .then(function(response) {
                        self.phone = response.data;

                    })
            }

            return service.getAllPhones().then(function (getPhone) {
                return selected.phone;
            })
        }
    }

    return service;
}])

.run(['$rootScope', '$state', '$stateParams',
    function ($rootScope, $state, $stateParams) {
        $rootScope.$state = $state;
        $rootScope.$stateParams = $stateParams;
    }  
])

Console error in FF

1 个答案:

答案 0 :(得分:2)

在您的getPhone方法中,如果您在for循环中return,则for循环后的代码将不会执行,这就是您的浏览器通过此警告消息提醒您的原因

您也可以在Chrome中看到此消息,只需更改Chrome DevTools中的日志优先级。

您可以在我为您编写的这个小脚本中看到返回问题:https://jsfiddle.net/kmy7hq8q/

要离开循环,您只需使用break,而不是return

if(phones[i].id == phoneId){
    this.phone = phones[i];
    break;
}