方法链是否有自我意识



在包Super Agent中,文档状态为:

可以通过调用request对象,然后调用.then(((或.end((或wait(发送要求

request
.get('/search')
.then(res => {
// res.body, res.headers, res.status
});

然而,SuperAgent支持方法链接,如

request.get('/search')
.set('header1','value')
.set('header2','value')

以便在发送请求之前对其进行修改。所以…

请求对象如何知道方法链何时完成,从而不会提前发送

我的理论是,request对象的任何断链都会返回一个可能的对象,该对象可以是await'd或.then()'d,当它是时,它会发出一个请求并返回一个实际的promise。

我在超级代理回购中找了找,找不到类似的东西。否则,如何等待发送请求,直到方法链完成?

只要找到源代码并查找,就永远不会出错。因此,如果您查看.then()的代码,您会发现它本身调用.end()

因此,请求是在调用.then().end()时发送的。在此之前,其他方法只是配置请求对象。

并且,使用await将在promise上调用.then()

此外,如果您在上面的源文件引用中搜索.end,您将看到数十个代码示例,它们都在链的末尾显示.end()。这是超级代理的原始设计架构。然后,当承诺出现时,添加了对.then()的支持,并在内部使用.end()

最新更新