非同步函數和傳回值
您的問題是,非同步函數儘管傳回值,但通常似乎不這樣做,因為傳回值被包裹在一個承諾中。要存取最終值,您有兩個選項:
1。 Promise 連結
您可以連結 Promise 的 .then() 方法來擷取最終值:
<code class="javascript">let allPosts = new Posts('https://jsonplaceholder.typicode.com/posts'); allPosts.init() .then(d => { console.log(allPosts.getPostById(4)); // Here you can return the value as needed });</code>
2。 Async/Await
在非同步函數中,你可以使用await來暫時暫停函數的執行並等待Promise解析:
<code class="javascript">async function myFunc() { const postId = 4; await allPosts.init(); // This is logging the correct value console.log('logging: ' + JSON.stringify(allPosts.getPostById(postId), null, 4)); // Return the result using await return allPosts.getPostById(postId); } myFunc() .then(result => console.log(result)) .catch(error => console.error(error));</code>
這樣,你可以透過正確處理程式碼的非同步性質,建立一個傳回getPostById(id) 值的函數。
以上是儘管被 Promise 包裹著,如何存取非同步函數的回傳值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!