为什么需要' req'变量被视为未定义?

时间:2016-05-04 16:09:56

标签: javascript json

以下代码每次运行时都会出错。部分service.getTracks(req,function(tracks),在参数' req'表示未定义)时出错。但是,程序仍然有效,但它仍然有效但仍然出错。我很想知道如果有人能说清楚为什么会发生这种情况?我现在已经盲目地盯着他看了4个小时,取得了0个进步......并且对此感到非常感激!

如果出现任何模糊或其他问题,请询问有关问题的问题。

祝你好运, 维克多

app.factory('echonestService', [
'$http',
'$rootScope',
'$cookies',
'$location',
function($http, $rootScope, $cookies, $location) {
    var service = {};
    service.getTracks = function(req, callback) {
        $http(req).then(
            function(res) {
                var tracks = [];
                res.data.forEach(function(e) {
                    tracks.push(e.song_id);
                });
                callback(tracks);
                console.log($rootScope.previews);
                $location.path('/review');
            }
        );
    };

    service.createPlaylist = function(name, tracks) {
        var url = 'http://127.0.0.1:8080/api/create-playlist';
        var data = {
            'user_id': $cookies.get('username'),
            'name': name,
            'tracks': tracks,
            'access_token': $cookies.get('access_token'),
            'refresh_token': $cookies.get('refresh_token')
        };

        $http.post(url, JSON.stringify(data)).then(
            function(res) {
                $rootScope.playlistLink = res.data;
                console.log($rootScope.playlistLink);
                $location.path('/result');
            },
            function(err) {
                console.log("error: ", err);
            }
        );

        service.getTracks(req, function(tracks) {
            data.tracks = tracks;
            $http.post(url, JSON.stringify(data)).then(
                function(res) {
                    $rootScope.playlistLink = res.data;
                    $rootScope.playlistName = name;
                    console.log($rootScope.playlistLink);
                },
                function(err) {
                    console.log("error: ", err);
                }
            );
        });
    };
    return service;
}]);

1 个答案:

答案 0 :(得分:0)

您实际使用req的唯一地方是:

$http(req).then(
    function(res) {
    (...etc...)
即使then()未定义,

req也会在$ http之后运行,这就是为什么您的代码仍在运行,因此您不需要需要 req在任何地方 - 但由于你在$http中使用它之前没有定义它,你就会收到错误。