我正在用 javascript 中的 promises 和 async / await 进行试验,但我不太明白这个脚本是如何工作的:
let promise = new Promise(()=> {
setTimeout(()=> console.log('Hi'), 3000)
});
function sayHi2(){
console.log('HiHi');
}
async function f() {
await promise;
sayHi2();
}
f();
它给了我:
承诺会在 3 秒后正常工作,但他们无法解决 sayHi2()函数,尽管我希望承诺会首先工作,也就是说,它将在 3 秒后显示信息,然后是sayHi2()功能将起作用。为什么会发生这种情况,您如何获得预期的结果?
Promise 有 3 种状态:pending(等待)、fullfill(成功完成)和拒绝(完成但有错误)。您必须使用 resolve(将 Promise 状态设置为已完成),否则您的 Promise 处于待处理状态并且没有任何反应。像这样是正确的:
https://learn.javascript.ru/promise