2015-11-06 75 views
0

我想直接返回結果(通常我們會嘗試將數據存入數據並訪問該數據,但現在我想要的是直接)。當我們撥打hello()函數時,我想返回result變量。 我嘗試如下,但它不會返回耶。我該如何嘗試?如何在不使用數據的情況下返回Vue資源?

hello: function() { 
     var result = ""; 

     this.$http.get(window.location.href).success(function(data) { 
      result = data; 
     }).error(function (data, status, request) { 

     });    

     return result; 
    } 

回答

2

看起來它不返回數據,因爲請求是異步的。您的方法設置請求,然後在請求有機會將任何數據分配給result變量之前立即同步返回。

你可以試着稍微改變你的代碼:

hello: function() { 
     var result = {}; 

     this.$http.get(window.location.href).success(function(data) { 
      result.data = data; 
      result.ready = true; 
     }).error(function (data, status, request) { 

     });    

     return result; 
    } 

這應該使您能夠在其他地方訪問數據(如result.data),但只異步查詢後已成功result.ready標誌會告訴你是否以及何時發生。

在我看來,使用承諾肯定會更好,但是,例如,使用jQuery Deferreds and promisesES6 promises以及polyfill

+0

你簡單地使用返回的資源,然後做完你需要的東西后會更好。等待結果填充將是錯誤的。 – Oddman

相關問題