node-fetch
文档建议在signal
上推荐使用timeout
,但没有提供任何提示:
{
// These properties are part of the Fetch Standard
...
signal: null, // pass an instance of AbortSignal to optionally abort requests
// The following properties are node-fetch extensions
...
timeout: 0, // req/res timeout in ms, it resets on redirect. 0 to disable (OS limit applies). Signal is recommended instead.
...
}
(来源:https://www.npmjs.com/package/node-fetch)
那是为什么?在什么情况下使用timeout
会成为问题?
答案 0 :(得分:0)
正如代码注释中的注释一样,它只是一个节点获取扩展。 AbortSignal是取消的新(未来?)标准方法,并且是取消fetch
答案 1 :(得分:0)
timeout
选项是node-fetch
的专有扩展,不属于WhatWG fetch standard的一部分。
在构建时,AbortController
在标准中尚不存在,因此该库提供了timeout
作为解决方法。
向应该尽可能准确地实现标准的库中添加非标准功能会出现问题:
AbortController
存在,该库必须维护两种中止请求的方式,这意味着需要更多的维护工作和more potential bugs。通过阻止使用此非标准功能,当作者最终deprecate and remove使用该功能时,将减少更少的代码。