我有一个特定的情况,我需要等待之前的异步调用结果 持续。我使用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.');
答案 0 :(得分:10)
异步函数将返回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()
答案 1 :(得分:6)
您应该在async function后使用.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.');
});

答案 2 :(得分:-1)
这是我认为发生的事情。在异步功能之外,还有一些不当行为,因此最好将其全部放入异步功能中,然后像这样调用它。
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();