我对异步函数中的链接请求很感兴趣。
比如说,我需要在异步函数中的request1
之后调用request2
。我会这样做:
const someFunct = async () => {
await request1();
await request2();
...
}
但是如果我在request1().then()
内部调用request2
,它会工作吗?是一样的吗?
const someFunct = async () => {
await request1()
.then(() => request2());
...
}
1条答案
按热度按时间af7jpaap1#
如果你想确保在async函数中request 1之后调用request 2,你有两个选项。正如你在代码中提到的那样,使用await是一种常见而直接的方法,但你也可以通过使用**.then()**链接promise来实现这一点。
使用await:
当你使用await时,第二个请求(request 2())只会在第一个请求(request 1())完成后执行。这意味着request 2()在request 1()完成执行之前不会启动,它们将按顺序运行。使用**.then()**:
当你使用.then()时,你正在创建一个promise链。在这种情况下,request 2()只有在request 1()解析(成功完成)之后才被调用。然而,这里的区别是你没有使用async/await,所以函数someFunc不是一个async函数。你可以在调用站点使用.then()或async/await处理someFunc()的结果。
总而言之,这两种方法都实现了链接请求的目标,但它们具有不同的语法和行为。如果你想使用async/await并确保request 2()在request 1()完成之前不会启动,那么使用第一种方法。如果您喜欢使用.then()链接,如第二个示例中所示,您也可以这样做,但请确保使用.then()处理结果,或在必要时在调用站点等待。