我想知道是否自定义“thenables”(又名带有.then()
方法)得到批准/记录?它们与真实的 Promise 相比如何?我认为如何实施很重要,所以我想知道是否有包含一些“应该做”和“不应该做”的文档。
这一页建议:
.then 可能会返回一个任意的“thenable”对象,并且它将被以与 Promise 相同的方式处理。
找不到任何关于此的文档。
thenables 与真实的 Promise 相比如何?
因为你不知道它们是否是真正的承诺。看一下关于 Promises/A+ 规范,术语“thenable”和“promise”之间有什么区别?.
我想知道是否有关于如何实现它们的一些应该做和不应该做的文档(因为这似乎才是重要的)
有(很简单)承诺/A+规范记录了 thenables 的处理方式。 ES6 承诺(并且通过扩展,await
)按照这个。基本上:
- 你的对象有一个名为的属性
then
其值是一个函数
- 该函数将通过两个回调被调用
- 你可以调用它们中的任何一个 - 异步或异步
- 第一次调用决定了同化你的 thenable 的 Promise 会发生什么
这真的不是什么魔法。当您想要解析某个值时,您可以调用第一个参数;当您想要拒绝时,您可以调用第二个参数。假设正确的 Promise 实现是没有禁忌的 - 您可以根据需要多次调用回调,并根据需要保留它们:应忽略调用,并且引用不应泄漏内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)