<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Promise | 锤子前端</title><description>Now vibe coding, so learning hammer FE ?</description><link>https://channel.meo-ai.com</link><item><title>《嵌套Promise的实际用途》</title><link>https://channel.meo-ai.com/posts/596</link><guid isPermaLink="true">https://channel.meo-ai.com/posts/596</guid><pubDate>Wed, 15 Apr 2026 01:52:09 GMT</pubDate><content:encoded>&lt;span class=&quot;post-title-source&quot;&gt;《嵌套Promise的实际用途》&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;标签：&lt;a href=&quot;/search/result?q=%23JavaScript&quot; title=&quot;#JavaScript&quot;&gt;#JavaScript&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23Promise&quot; title=&quot;#Promise&quot;&gt;#Promise&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%B9%B6%E5%8F%91%E6%8E%A7%E5%88%B6&quot; title=&quot;#并发控制&quot;&gt;#并发控制&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23RWLock&quot; title=&quot;#RWLock&quot;&gt;#RWLock&lt;/a&gt; &lt;a href=&quot;/search/result?q=%23%E5%87%BD%E6%95%B0%E5%BC%8F%E7%BC%96%E7%A8%8B&quot; title=&quot;#函数式编程&quot;&gt;#函数式编程&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;总结：&lt;br /&gt;&lt;br /&gt;文章探讨了JavaScript中Promise自动扁平化设计的利弊。作者回顾了Promise/A+规范制定时关于是否引入Monad和Functor概念的争论，并通过实现读者-写者锁（RWLock）的实际案例，展示了嵌套Promise在并发控制中的独特价值——它能让一个异步函数调用另一个异步函数，却不阻塞等待内层函数完成，从而实现精细的并发管理。&lt;br /&gt;&lt;br /&gt;文章要点：&lt;br /&gt;&lt;br /&gt;- Promise的&lt;code&gt;then()&lt;/code&gt;方法同时承担了Functor的&lt;code&gt;map&lt;/code&gt;和Monad的&lt;code&gt;flatMap&lt;/code&gt;功能，会自动扁平化任意层级的嵌套Promise&lt;br /&gt;- 函数式编程社区曾希望Promise能区分&lt;code&gt;map()&lt;/code&gt;和&lt;code&gt;flatMap()&lt;/code&gt;，但规范作者出于便利性考虑拒绝了这一提议&lt;br /&gt;- 作者在开发EscoDB时遇到了一个真实场景：实现读者-写者锁（RWLock）需要协调多个读操作并发执行、写操作独占执行&lt;br /&gt;- 通过显式返回&lt;code&gt;{ &lt;mark class=&quot;highlight&quot;&gt;promise&lt;/mark&gt;: &lt;mark class=&quot;highlight&quot;&gt;Promise&lt;/mark&gt;&amp;lt;T&amp;gt; }&lt;/code&gt;结构来&quot;绕过&quot;Promise自动扁平化，实现了关键功能：保护&quot;检查队列状态&quot;和&quot;放入任务&quot;这两个动作的原子性，同时又不阻塞调度器等待任务实际执行完成&lt;br /&gt;- 嵌套Promise代表&quot;一个异步函数调用另一个异步函数，但不等待其完成&quot;的语义，在主动管理并发控制时非常有用&lt;br /&gt;- Promise扁平化本质上是&quot;时间上的连接&quot;（强制顺序执行），而嵌套Promise则保留了并行调度的可能性&lt;br /&gt;&lt;br /&gt;文章URL：&lt;a href=&quot;https://blog.jcoglan.com/2026/03/23/uses-for-nested-promises/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; title=&quot;https://blog.jcoglan.com/2026/03/23/uses-for-nested-promises/&quot;&gt;https://blog.jcoglan.com/2026/03/23/uses-for-nested-promises/&lt;/a&gt;</content:encoded></item></channel></rss>