2016-03-17 16 views
0

如何直接在angular promise中獲得解析值?
我想在下面的函數中得到字符串「ok」,而不是承諾對象。
有人幫忙?如何在angularjs中獲得promise中的解析值

var getReturn = function() { 
     var defer = $q.defer(); 
     var promise = defer.promise; 
     defer.resolve("ok"); 
     return promise.then(function (value) { 
      console.log(value); 
      return(value); 
     }); 
    }; 
+0

你能否澄清一下你的問題?目前尚不十分清楚你想達到什麼目的。你想在哪裏獲得什麼價值,爲什麼? –

回答

0

當您處理承諾時,您無法真正做到這一點。承諾意味着等待或推遲,直到預期值準備就緒,這意味着你應該只在它的「then」塊中獲得該值,特別是如果它是$ http承諾。

+0

我只是想在完成http請求後執行某些操作,但我很困惑在哪裏編寫代碼。 – Lune

+0

您可以將它與您的控制器或與$ http請求關聯的服務對齊。 – amcpanaligan

2

由於函數不是異步的,因此不需要承諾。所以正確的方式這樣做將是:

var getReturn = function() { 
    return "ok"; 
} 

如果你仍然想這是你應該做的承諾如下:

var getReturn = function() { 
     var defer = $q.defer(); 
     setTimeout(function() { 
      defer.resolve("ok"); 
     },0) 
     return defer.promise; 
    }; 

何地,你調用函數做那麼:

getReturn().then(function (value) { 
      console.log(value); 
     }); 
+0

實際情況是我想發送一個請求來加載一些數據,並在得到數據後做了一些事情:someService.getData()。then(function(data){xxxxx}); – Lune

+0

只需更換我寫入的http請求中的setTimeout fn,當您得到響應時,您可以使用響應來解決或拒絕 –

+2

這是正確的答案:) – aup