在工作期间,我偶然发现了我们代码库中的这一行(旨在在浏览器中运行)。这行有效果吗?对我来说似乎没有必要,但是在删除它之前,我想绝对确定我不会忽略此行所做的一些古怪的 promise 特殊行为。

// Chain the finishPromise to our global finish chain.
this.finishPromise = this.finishPromise.then();
在该行的旁边,它被await编码了几次,被初始化为Promise.resolve(),据我所知,它永远不会被覆盖。

最佳答案

假设这是原生JavaScript许诺或其他与Promises / A +兼容且没有自定义副作用的东西,¹这是有效的(JS specPromises/A+ spec),这让我有些惊讶,但没有用,并且没有任何效果。您可以安全地删除它。

¹“...并没有自定义的副作用...”上面的评论说:“将finishPromise绑定(bind)到我们的全局Finish链中”使我怀疑这是否是一个promise子类(或更糟糕的是,猴子修补了)普通Promise.prototype.then的版本),并具有某种副作用。但这很容易解释最初传递给then并随后被删除的内容...

07-28 09:43