考虑以下脚本:
async function fn() {
await new Promise(() => { console.log("promise"); });
console.log("done");
}
fn();
输出是
promise
如果我不等待承诺,那么结果就会不同。
async function fn() {
new Promise(() => { console.log("promise"); });
console.log("done");
}
fn();
现在的输出更加符合预期。
promise
done
我假设这是由于某种语言的错误使用造成的,但我想知道这种差异的原因。
因为您没有调用
resolve
函数,而当 new Promise
创建的 Promise 应该被解析时,您应该调用该函数:
async function fn() {
await new Promise(() => { console.log("promise"); });
console.log("done");
}
fn();
应该是
async function fn() {
await new Promise((resolve) => { console.log("promise"); resolve(); });
console.log("done");
}
fn();
如果你希望它能完成。