这里的关键元素是 一般if (this.isMounted()) { setState(...) }
的反模式。它可能导致压制有用的警告,因此应该以怀疑的态度对待它,因为在大多数情况下,它代表了掩盖实际问题的机会。这样,即使在其行为在功能上与某些其他方法相同的情况下,该其他方法也是可取的。 __
对于API调用,您完全可以忽略一个承诺的结果,因为它不再相关了,这是完全合理的。在语法上和语义上,使用已取消的承诺将是否忽略该结果的逻辑专门与API调用联系在一起,从而避免了将来的开发人员在其他情况下意外使用该代码并可能抑制有意义的警告的可能性。
尽管差异可能是语义上的,但语义本身对可维护性具有价值。在这种情况下,可撤销的承诺可以在结构上定位问题,将可能是一个问题的行为附加到可以实现的特定情况。