簡體   English   中英

javascript異步/等待無法正常工作

[英]javascript async/await not working

我有一個特定的情況,我需要在繼續之前等待異步調用結果。 我使用async / await關鍵字,但沒有運氣。 任何幫助贊賞。

這是我試圖讓它工作的嘗試,數字應按數字順序排列。

 function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function demo() { document.writeln('2...'); await sleep(2000); document.writeln('3...'); } document.writeln('1...'); demo(); document.writeln('4.'); 

async函數將返回Promise ,因此您需要等待對demo的調用

 const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms)) const demo = async() => { console.log('2...') await sleep(2000) console.log('3...') } const blah = async() => { console.log('1...') await demo() console.log('4.') } blah() 

你應該在異步函數之后使用.then()

 function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function demo() { document.writeln('2...'); await sleep(2000); document.writeln('3...'); } document.writeln('1...'); demo().then(() => { document.writeln('4.'); }); 

這就是我認為發生的事情。 在異步函數之外,存在一些不當行為,因此最好將它全部放在異步函數中並像這樣調用它。

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function demo() {
  console.log('1...');
  console.log('2...');
  await sleep(2000);
  console.log('3...');
  console.log('4...');

}
demo();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM