then promesas nodejs from example es6 catch promise ecmascript-6 traceur es6-promise babeljs

promesas - promise typescript



Extendiendo Promesas en ES6 (1)

¿Lo anterior ya no es operativo, o no se convirtió en la especificación, o simplemente no está implementado por traceur y / o nodo?

ES6 promete en la subclasificación de soporte de especificaciones. Es decir, eventualmente podrá hacer promesas de subclase de la manera que acaba de hacer. Esto es por diseño.

Dicho esto, ninguno de los navegadores actualmente sigue esa especificación correctamente a este respecto, por lo que sé, solo la compatibilidad de ES6, Babel (core-js) y RSVP siguen la semántica de ES6 con respecto a la subclasificación correcta. El soporte en los navegadores eventualmente llegará pero aún no está allí. Mantenlo apretado.

Aquí hay una lista de implementaciones de soporte actualmente .

Estoy tratando de extender Promesa:

class PersistedPromise extends Promise { }

Luego llame a la resolve estática en la clase derivada para crear directamente una promesa resuelta:

PersistedPromise.resolve(1)

En traceur, esto produce:

ModuleEvaluationError: #<PersistedPromise> is not a promise at new PersistedPromise (~rtm/gen/promise.js:6:57) at Function.resolve (native)

En Babel (ejecutado como babel-node --experimental promise.js ) da como resultado:

Promise.apply(this, arguments); ^ TypeError: [object Object] is not a promise at new PersistedPromise (~rtm/gen/promise.js:1:23) at Function.resolve (native) ...

Estaba dependiendo de esto

Todos los métodos estáticos de Promise admiten subclases: crean nuevas instancias a través de su receptor (think: new this (...)) y también acceden a otros métodos estáticos a través de it (this.resolve (...) versus Promise.resolve (.. .)).

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

Parece que el nodo comprueba this en llamadas como Promise.resolve.call(this, val) por ser una Promise , en lugar de (correctamente?) Promise o una clase derivada de la misma (v0.12.0).

¿Lo anterior ya no es operativo, o no se convirtió en la especificación, o simplemente no está implementado por traceur y / o nodo?