Web3.js: 使用 `call(..)` 是否执行网络 activity?

Web3.js: Does using `call(..)` perform network activity?

当使用 web3 的 [contract].[method].call(..) 时,web3 是否执行网络 activity 来获取合约的最新状态?或者它是否始终与新块保持同步,因此不需要获取? 这取决于供应商吗?如果是这样,MetaMask 的政策是什么?

该代码在您用作提供者的节点上调用 eth_call JSON-RPC 方法。如果节点位于同一台计算机上,则没有 外部 网络 activity。 (调用可能是通过 websocket 或 HTTP 进行的,因此它是一种网络调用,但没有任何内容离开计算机。)

如果您使用的是外部节点,例如Infura(默认提供者 MetaMask 连接到),然后有外部网络 activity 将请求发送到该节点并接收响应。