2016-05-06 12 views
1

Ich habe Kris Kowals Q verwendet, aber jetzt versuche ich, die Anzahl der Bibliotheken zu verringern, also wechsle ich zu nativen Promises (aber ja, ich benutze einen Polyfill, um den Internet Explorer zu unterstützen).Was bedeutet "Nicht-Konstruktorwert, der an NewPromiseCapability übergeben wurde"?

Die meisten meiner Funktionen geben Versprechen, aber es gab einen Ort, wo ich Q.all als von meinem eigenen Code zur Verfügung gestellt werden wollte. Als ich das tat:

MyLibrary.prototype.all = Promise.all;

..., und verwendet es (myLibrary.all([...]).then(...)), bekam ich "Non-Konstruktor Wert NewPromiseCapability übergeben." Was bedeutet das?

Antwort

0

MyLibrary geerbt nie richtig von Promise, so der Kontext ("diese") wurde verloren.

Um zu beheben, anstatt myLibrary.all([...]) zu tun, verwende ich nur Promise.all ([...]).

Ich nehme an, eine andere Option hätte sein können, um .all() zu Versprechen von MyLibrary.prototype.all = Promise.all.bind(Promise)

zu binden