3 回答
TA贡献1906条经验 获得超10个赞
就像构造 Promise 时一样,在遇到任何s之前,async函数内部的任何同步都会同步执行。一个功能只会停止执行其代码,一旦遇到-直到那时,它也可以被正常的非功能(除了一个事实,即它会包裹在无极的返回值)。awaitasyncawaitasync
async function asyncFunc2() {
console.log("in Async function 2");
}
async function asyncFunc1() {
console.log("in Async function 1");
await asyncFunc2();
console.log('After an await');
}
console.log("starting sync code");
asyncFunc1().then(() => {
console.log("Received answer from async code");
});
console.log("finishing sync code");
正如你可以在上面的代码段看到,主线程仅恢复以外asyncFunc1一次asyncFunc1的await(和所有同步由调用代码await)完成。
async是一个允许您await在函数内部使用的关键字,但它本质上并不意味着其他任何东西,实际上 - 它只是一个关键字。该功能可以甚至可以运行所有的代码的同步(虽然这会是一种奇怪的看)。
TA贡献1828条经验 获得超13个赞
只是为了证明我和@CertainPerformance 的观点。下面是一个睡眠函数的相同示例,它在等待解决之前等待 500 毫秒:
async function sleep(msec) {
return new Promise(resolve => setTimeout(resolve, msec));
}
async function asyncFunc() {
await sleep(500);
console.log("executing async function");
}
console.log("starting sync code");
asyncFunc().then(() => {
console.log("executing callback of async function")
});
console.log("sync code completed");
这里只有一个 console.log:
async function sleep(msec) {
console.log('test');
}
async function asyncFunc() {
await sleep(500);
console.log("executing async function");
}
console.log("starting sync code");
asyncFunc().then(() => {
console.log("executing callback of async function")
});
console.log("sync code completed");
添加回答
举报