2016-07-05 77 views
-1

我想要得到的數據從一個函數傳遞,數據成功的成功響應內側返回。但是我不能從函數本身返回數據。返回數據發佈

function getStatusPublished(dating, product) 
     { 
     var datas = ""; 

     var deferred = $q.defer(); 

     var success = function(response, status, headers, config){ 
      datas = response; 
     } 


     var error = function(error, status, headers, config){ 
      datas = "error"; 
     } 


     var cdnss = "htttp://application_ajax"; 
     $http.post(cdnss+"&pblishDateVacan="+dating+"&ProjectID="+product).success(success).error(error); 


     console.log(datas); 
     } 

在執行console.log只是說不確定

請幫忙。謝謝。

+0

你不能從函數返回的數據。 http調用是異步的,需要時間才能恢復數據。一個函數是同步的,並立即返回。你可能想要從你的函數中返回一個承諾。 – rob

+0

你能幫助我,請問,如何做到這一點與承諾回報? –

+0

把'console.log(datas);'** INSIDE **成功函數 –

回答

0

$http.post方法返回承諾;不是數據。

要返回一個承諾,只需使用一個return聲明。

function getStatusPublished(dating, product) { 
    var url = "htttp://application_ajax"; 
    var params = {pblishDataVacan: dating, 
        ProjectId: product}; 
    var config = { params: params }; 
    //return promise 
    return (
     $http.post(url,{},config) 
    ); 
}; 

要從承諾獲取數據,使用.then方法:

var promise = getStatusPublished(d, p); 

promise.then(function(result) { 
    $scope.data = result.data; 
}).catch (function(result) { 
    console.log(result.status); 
});