Ich möchte ein Objekt instanziieren, in dem der Konstruktor vor der Rückgabe asynchrone Aufrufe durchführt. Der Zweck ist asynchrone Curry zu machen. Ich benutze co. Das folgende Beispiel schlägt fehl. Was mache ich falsch?neues Objekt mit asynchronen Routinen
var co = require('co')
function asyncFunction() {
return new Promise(function (resolve) {
resolve()
})
}
function MyObject() {
co(function *() {
yield asyncFunction()
}).then(()=> {
this.runSomething = function() {
return 'something'
}
})
}
new MyObject().runSomething()
// TypeError: (intermediate value).runSomething is not a function
'co' gibt ein' Versprechen' zurück, das Sie nicht auflösen. – jonrsharpe
Wenn Sie eine reine Punktnotation von Eigenschaften ohne Callback (lke 'new MyObject(). RunSomething()') sehen, ist es synchron. Sie benötigen einen Rückruf im Hauptcode. – trincot
Tu es nicht! Erlaube 'new MyObject()', vollständig synchron zu sein und irgend etwas Asynchron zu den Methoden von MyObject() zu verbannen. –