DanLevy.net

Promise 文档中的陷阱

避开流行文档中的坑

Hero image for Promise 文档中的陷阱

识别 Google 搜索结果和流行库中常见的 Promise 反模式。

craig-whitehead-433328-unsplash.webp

先交待一下:我也写过下面要批判的这些“反模式”,我相信很多 JS 开发者都写过。我所列出的内容并非针对个人或原作者。我只是在对常见模式进行代码审查——希望能分享我的优先级判断和批判性思维过程。

希望在读完本项目后,你能识别出烂 Promise 的预兆。

  1. CallbackHell.com
  2. StrongLoop
  3. RisingStack
  4. Q Library

CallbackHell.com

来源: http://callbackhell.com/ CallbackHell.com


StrongLoop

来源: https://strongloop.com/strongblog/node-js-callback-hell-promises-generators/ strong loop


RisingStack

来源: https://blog.risingstack.com/node-js-async-best-practices-avoiding-callback-hell-node-js-at-scale/ 这是一篇相当扎实的文章。我只有一个疑虑:

Rising Stack


Q Library

来源: https://github.com/kriskowal/q

Q 库是与“Promises”相关的最常用且最古老的库之一。因此,它深受陈旧示例和向后兼容性需求的困扰。 我之所以说“与 ‘Promises’ 相关”,是因为我觉得 Q 本质上是关于 deferred 模式的。

它可能看起来像 Promise,但我坚持认为它不是。它的 API 暴露面太大,而且理由都不对。此外,命名约定不一致地缩写名称,导致接口很难记忆。像 whendone 这样的方法根本没有必要。

底线是:deferred 模式是一个痛苦的反模式——相比传统的回调方式,它几乎没有任何改进。

q first example

q xmlHTTP deferred anti-pattern

请查看(并点赞)本文的配套 Github 项目:Escape From Callback Mountain

项目目标:研究并开发 JavaScript 中更好的函数式语言模式。