方法链是自我意识的吗?
Are method-chains self-aware?
在包 Super Agent 中,文档状态:
A request can be initiated by invoking the appropriate method on the
request object, then calling .then() (or .end() or await) to send the
request.
request
.get('/search')
.then(res => {
// res.body, res.headers, res.status
});
但是 SuperAgent 支持方法链接,例如
request.get('/search')
.set('header1','value')
.set('header2','value')
在发送前修改请求。所以...
请求对象如何知道方法链何时完成,从而不会过早发送?
我的理论是 request
对象的任何链 return 是一个可以 await
或 .then()
的对象,并且如果是,它将发出一个请求和 return 一个实际的承诺。
我在 superagent 存储库中四处查看,找不到类似的东西。在方法链完成之前等待发送请求还有什么方法可以完成?
只要去源头查找,永远不会出错。所以,如果你查看 the code for .then()
,你会发现它自己调用了 .end()
。
因此,在调用.then()
或.end()
时发送请求。到那时,其他方法只是配置请求对象。
并且,使用 await
将调用 .then()
承诺。
此外,如果您在上面的源文件参考中搜索 .end
,您将看到许多代码示例都在链的末尾显示 .end()
。这是 superagent 的原始设计架构。然后,当 promises 出现时,添加了对 .then()
的支持,并在内部使用 .end()
。
在包 Super Agent 中,文档状态:
A request can be initiated by invoking the appropriate method on the request object, then calling .then() (or .end() or await) to send the request.
request
.get('/search')
.then(res => {
// res.body, res.headers, res.status
});
但是 SuperAgent 支持方法链接,例如
request.get('/search')
.set('header1','value')
.set('header2','value')
在发送前修改请求。所以...
请求对象如何知道方法链何时完成,从而不会过早发送?
我的理论是 request
对象的任何链 return 是一个可以 await
或 .then()
的对象,并且如果是,它将发出一个请求和 return 一个实际的承诺。
我在 superagent 存储库中四处查看,找不到类似的东西。在方法链完成之前等待发送请求还有什么方法可以完成?
只要去源头查找,永远不会出错。所以,如果你查看 the code for .then()
,你会发现它自己调用了 .end()
。
因此,在调用.then()
或.end()
时发送请求。到那时,其他方法只是配置请求对象。
并且,使用 await
将调用 .then()
承诺。
此外,如果您在上面的源文件参考中搜索 .end
,您将看到许多代码示例都在链的末尾显示 .end()
。这是 superagent 的原始设计架构。然后,当 promises 出现时,添加了对 .then()
的支持,并在内部使用 .end()
。