Custom soables:我可以使用“then”方法创建自己的对象吗?

时间:2017-11-08 11:20:45

标签: javascript promise async-await

我想知道自定义“thenables”(又名.then()方法的对象)是否被批准/记录?他们如何与真正的承诺相提并论?我认为你的实施方式很重要,所以我想知道是否有一些DO和DONT的文档。

This page建议:

  

。然后可以返回一个任意的“可用”对象,它将被视为与promise相同的方式。

找不到任何关于此的文档。

1 个答案:

答案 0 :(得分:2)

  

如何与真实的Promises相比?

因为你不知道他们是否是真正的承诺。看看Regarding Promises/A+ Specification, what is the difference between the terms "thenable" and "promise"?

  

我想知道是否有关于如何实施它们的DO和DONT的文档(因为这看起来很重要)

(非常简单)Promises/A+ specification记录了如何处理这些问题。 ES6承诺(以及await)遵循这一点。基本上是:

  • 您的对象有一个名为then的属性,其值为函数
  • 该函数将通过两个回调调用
  • 你可以调用其中任何一个 - 异步或不是
  • 第一个电话决定了同化你的可能性的承诺会发生什么。

这真的没有魔力。当您想要使用值解析时调用第一个参数,并在要拒绝时调用第二个参数。没有DONT假定正确的承诺实现 - 您可以根据需要随时调用回调,并且只要您愿意保留它们:应该忽略调用并且引用不应该泄漏内存。