我对异步函数中的链接请求感兴趣。
比方说,我需要在异步函数内的
request2
之后调用 request1
。
我会这样做:
const someFunct = async () => {
await request1();
await request2();
...
}
但是如果我在
request2
中调用 request1().then()
会起作用吗?是一样的吗?
const someFunct = async () => {
await request1()
.then(() => request2());
...
}
如果您想确保在异步函数中 request2 在 request1 之后被调用,您有几个选择。正如您在代码中提到的那样,使用 wait 是一种常见且直接的方法,但您也可以通过使用 .then() 链接 Promise 来实现此目的 这是两种方法的示例:
使用等待:
const someFunct = async () => {
await request1();
await request2();
// Any code that depends on the results of request1 and request2
}
当您使用await时,第二个请求(request2())只会在第一个请求(request1())完成后才会执行。这意味着 request2() 在 request1() 完成执行之前不会启动,并且它们将按顺序运行。 使用 .then():
const someFunc = () => {
return request1().then(() => {
return request2();
});
// ...
}
当您使用 .then() 时,您正在创建一条承诺链。在这种情况下,request2() 仅在 request1() 解析(成功完成)后调用。但是,这里的区别在于您没有使用 async/await,因此函数 someFunc 不是异步函数。您可以在调用站点使用 .then() 或 async/await 处理 someFunc() 的结果。
综上所述,两种方法都实现了链接请求的目标,但它们具有不同的语法和行为。如果您想使用 async/await 并确保 request2() 在 request1() 完成之前不会启动,请使用第一种方法。如果您更喜欢使用 .then() 链接(如第二个示例中所示),您也可以这样做,但请确保使用 .then() 处理结果,或者如有必要,请在调用站点等待。