[英]How to call an async function?
我希望控制台首先打印“1”,但我不確定如何調用異步函數並等待其執行,然后再轉到下一行代碼。
const request = require("request");
async function getHtml() {
await request("https://google.com/", function (error, response, body) {
console.log("1");
});
}
getHtml();
console.log("2");
當然,我得到的輸出是
2
1
返回值
一個 Promise,它將使用 async 函數返回的值來解決,或者被從 async 函數中拋出的未捕獲的異常拒絕。
async 函數將始終返回一個承諾,您必須使用.then()
或await
來訪問它的值
async function getHtml() { const request = await $.get('https://jsonplaceholder.typicode.com/posts/1') return request } getHtml() .then((data) => { console.log('1')}) .then(() => { console.log('2')}); // OR (async() => { console.log('1') await getHtml() console.log('2') })()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
將async
關鍵字放在函數之前使其成為異步函數。 這基本上對函數做了兩件事:
await
關鍵字。 await
關鍵字可以“等待”一個承諾被解決。 這讓我們能夠以同步的方式編寫異步代碼。 例如本教程。 在您的示例中, console.log(2)
將始終首先完成,因為在 JS 應用程序中,同步代碼始終會先於異步代碼完成。 Promise 始終是async
的,因此顧名思義也是異步的。 有關這方面 的更多信息,請查看事件循環。
您應該await
異步功能,如果想在繼續之前等待它解決或使用.then()
await getHtml();
console.log('2');
或者
getHtml()
.then(() => {
console.log('2');
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.