2017-07-29 178 views
0

我將如何製作JavaScript對象getter返回承諾的返回值?JavaScript getter返回承諾值

查看下面的代碼片段,瞭解我正在努力實現的目標。

var my_object = { 
 
    get latest() { 
 
     return axios.get('https://jsonplaceholder.typicode.com/posts/1') 
 
      .then(function (response) { 
 
       return response.data; 
 
      }); 
 
    } 
 
}; 
 

 
console.log(my_object.latest); // Promise
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.16.2/axios.min.js"></script>

+0

你是問如何調用異步函數(axios.get),並同步返回值?想一想,看看它有多不可能是 –

回答

3

嘗試my_object.latest.then(x => console.log(x))

var my_object = { 
 
\t get latest() { 
 
    \t return axios.get('https://jsonplaceholder.typicode.com/posts/1').then(function (response) { 
 
    \t return response.data; 
 
    }); 
 
\t } 
 
} 
 

 
my_object.latest.then(x => console.log(x));
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.16.2/axios.min.js"></script>

+2

您可以簡單地這樣做:'my_object.latest.then(console.log)' – fubar

+0

好的一點,謝謝) –

+0

從「返回承諾的返回值」開始,我認爲OP希望'my_object.latest'等於Promise的返回值,而不是實際的Promise(儘管它不完全清楚)。在這種情況下,唯一的方法是使用async/await。 – GTF