gpt4 book ai didi

promise - 扩展ES6中的 promise

转载 作者:行者123 更新时间:2023-12-03 11:42:13 27 4
gpt4 key购买 nike

我正在尝试扩展Promise:

class PersistedPromise extends Promise { }

然后在派生类上调用静态 resolve以直接创建一个已解决的Promise:
PersistedPromise.resolve(1)

在traceur中,这产生:
ModuleEvaluationError: #<PersistedPromise> is not a promise
at new PersistedPromise (~rtm/gen/promise.js:6:57)
at Function.resolve (native)

在Babel中(以 babel-node --experimental promise.js运行)会导致:
    Promise.apply(this, arguments);
^
TypeError: [object Object] is not a promise
at new PersistedPromise (~rtm/gen/promise.js:1:23)
at Function.resolve (native)
...

我依赖于此:

All static methods of Promise support subclassing: they create new instances via their receiver (think: new this(...)) and also access other static methods via it (this.resolve(...) versus Promise.resolve(...)).



来自 http://www.2ality.com/2014/10/es6-promises-api.html

看来节点检查诸如 this之类的调用上的 Promise.resolve.call(this, val)Promise,而不是(正确吗?) Promise或其派生类(v0.12.0)。

以上内容不再有效,还是没有纳入规范,或者只是没有由traceur和/或node实现?

最佳答案

Is the above no longer operative, or did not make into the spec, or just not implemented by traceur and/or node?



规范中的ES6 Promise支持子类化。也就是说,您最终将能够像刚才那样继承Promise。这是设计使然。

也就是说,目前还没有浏览器在这方面正确遵循该规范-据我所知,只有ES6-promise垫片,Babel(core-js)和RSVP在正确子类化方面遵循ES6语义。浏览器的支持最终会出现,但还不存在。抓紧。

这是一个 list of currently supporting implementations

关于promise - 扩展ES6中的 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29333540/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com