Fra*_*ank 3 javascript promise async-await
我只是想了解Promises和Await是如何工作的.
我希望通过1, 2, 3以该顺序登录来解决此问题.目前它记录1, 3, 2.
我知道Promise在这里没有意义,但在我的程序中它有其他用途,所以需要留下来.从Caller功能到Test需要留下的路线(如果需要你可以改变这些但只是知道他们在那里是有原因的)
我的问题是如何等待Caller函数解决?
function Test() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('2');
resolve();
}, 2000);
})
}
function Caller() {
Test();
}
console.log('1');
Caller();
console.log('3');Run Code Online (Sandbox Code Playgroud)
我已经尝试了我所理解的,即使Caller()函数等待Test Promise,但这当然使得Caller()函数异步,因此我们仍然得到1,3,2
async function Caller() {
await Test();
}
Run Code Online (Sandbox Code Playgroud)
是否有一些方法可以使用await而不使函数异步?
await一个返回一个promise的函数(嗯,不完全正确,如果它没有返回一个它创建一个立即解析的promise的promise)await在异步函数内部时才能使用function test() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('2');
resolve();
}, 2000);
})
}
async function caller() {
console.log('1');
await test();
console.log('3 (this is blocked awaiting the promise');
}
caller()
console.log("This is not blocked because caller is async");Run Code Online (Sandbox Code Playgroud)