2016-11-04 2 views
0

я иметь эту функцию:Объявляет функцию внутри другой функции

charCtrl.loadDataFromToMonth= function (from,to,year) { 
var url = servername+'admin/dashboard/getIncidentDepartByMonthFromTo/'+from+'/'+to+'/'+year; 
//alert(url); 
function onSuccess(response) { 
    console.log("+++++getIncidentDepartByMonthFromTo SUCCESS++++++"); 

    if (response.data.success != false) { 

    $scope.payloadgetIncidentDepartByMonthFromTo = response.data.data; 

    var getIncidentDepartByMonthFromTo= $scope.payloadgetIncidentDepartByMonthFromTo; 
    // alert('dddd'+JSON.stringify(loadedDataByMission)); 
    $scope.labelsf = []; 
    $scope.qsd = []; 
    $scope.dataf = []; 
    getIncidentDepartByMonthFromTo.forEach(function(data) { 
     var monthNumber=$filter('date')(data.la_date, "MM"); 
     $scope.labelsf.push($filter('monthName')(monthNumber)); 
     $scope.dataf.push(data.number); 
     $scope.qsd.push('ff','ff','ff'); 
    //alert($scope.labelsf); 
    }); 
    //alert($scope.dataf); 
    charCtrl.loadDataFromToMonthArrivee(from,to,year); 
    } else { 
    alert("failure"); 
    } 
    // $scope.stopSpin('spinner-0'); 
}; 

function onError(response) { 
    console.log("-------getIncidentDepartByMonthFromTo FAILED-------"); 
    //$scope.stopSpin('spinner-0'); 
    console.log(response.data); 
    console.log("Inside getIncidentDepartByMonthFromTo error condition..."); 
}; 

//----MAKE AJAX REQUEST CALL to GET DATA---- 
ajaxServicess.getData(url,username,password, 'GET', '').then(onSuccess, onError); 

}; 

эту функцию возврата для Exemple: $ scope.dataf = [ '45', '48', '255'];

У меня есть вторая функция, кстати, его ту же функцию, но она получает данные из другой службы Rest:

charCtrl.loadDataFromToMonthArrivee= function (from,to,year) { 
var url = servername+'admin/dashboard/getIncidentArriveeByMonthFromTo/'+from+'/'+to+'/'+year; 
//alert(url); 
function onSuccess(response) { 
    console.log("+++++getIncidentDepartByMonthFromTo SUCCESS++++++"); 

    if (response.data.success != false) { 

    $scope.payloadgetIncidentArriveeByMonthFromTo = response.data.data; 

    var getIncidentArriveeByMonthFromTo= $scope.payloadgetIncidentArriveeByMonthFromTo; 
    // alert('dddd'+JSON.stringify(loadedDataByMission)); 
    $scope.labelsf = []; 
    $scope.qsd = []; 
    $scope.dataf = []; 
    getIncidentArriveeByMonthFromTo.forEach(function(data) { 
     var monthNumber=$filter('date')(data.la_date, "MM"); 
     $scope.labelsf.push($filter('monthName')(monthNumber)); 
     $scope.dataf.push(data.number); 
     //$scope.qsd.push('ff','ff','ff'); 
     //alert($scope.labelsf); 
    }); 
    alert('aqsz'+$scope.dataf); 
    } else { 
    alert("failure"); 
    } 
    // $scope.stopSpin('spinner-0'); 
}; 

function onError(response) { 
    console.log("-------getIncidentDepartByMonthFromTo FAILED-------"); 
    //$scope.stopSpin('spinner-0'); 
    console.log(response.data); 
    console.log("Inside getIncidentDepartByMonthFromTo error condition..."); 
}; 

//----MAKE AJAX REQUEST CALL to GET DATA---- 
ajaxServicess.getData(url,username,password, 'GET', '').then(onSuccess, onError); 

    }; 

эта функция возвращает для Exemple: $ scope.dataf = [ «69»,» 50' , '96'];

Мой вопрос: есть ли способ объявить вторую функцию в первом fuction и получить такой результат: Эта функция возвращает пример: $ scope.dataf = [['45', '48', '255'], [ '69', '50', '96']];

ответ

0

Я бы воспользовался обещаниями дождаться, пока второй вызов отвечает и обновляет переменную в области функций (родственная функция). Что-то вроде этого:

var aggregate = []; 

charCtrl.loadDataFromToMonth() 
.then(function(resp){ 
    return new Promise(resolve, reject){ 

    aggregate.push(resp.data); // push the response from the first call 

    charCtrl.loadDataFromToMonthArrivee() 
    .then(function(resp) { 
     aggregate.push(resp.data); // push the result from the second call 
     resolve(resp) 
    }) 
    } 
}) 
.then(function(resp){ 

    console.log(aggregate); // should have both results 

}) 

Или еще лучше, вы можете использовать Promise.all (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all)

+0

... на самом деле мои собственные функции aere сделал с PROMISS ... в любом случае он не работает –

+0

я думаю, что его не о пропуске –

Смежные вопросы