Da es sich um ein asynchrones Verfahren handelt, kann nicht garantiert werden, wann das Versprechen gelöst wird. Möglicherweise muss es eine Weile warten (abhängig davon, was Sie tun).
Die typische Art der Ausführung nach einem Versprechen ist die Verkettung der Ausführung oder die Verwendung von Callback-Funktionen.
Als Rückruf
Ihr Beispielcode (für mich) schlägt die Verwendung eines Rückrufes.
exports.myFunction = function(callback){
myPromise.doThis().then(ret => {
callback(ret);
});
}
Dann würde sich mit ähnlich ist:
var myFunction = require('pathToFile').myFunction;
myFunction(function(ret){
//Do what's required with ret here
});
bearbeiten:
Wie @torazaburo erwähnt, kann die Funktion in kondensiert werden:
exports.myFunction = function(callback){
myPromise.doThis().then(callback);
}
Wie ein Versprechen
exports.myFunction = function(){
//Returnes a promise
return myPromise.doThis();
}
Dann mit würde aussehen:
var myFunction = require('pathToFile').myFunction;
myFunction().then(function(ret){
//Do what's required with ret here
});
können Sie nicht. Sie können ihm nur einen Rückruf geben und diesen Callback innerhalb des 'Then'-Aufrufs aufrufen, oder Sie geben ein anderes Versprechen zurück –
In JavaScript können Sie nicht warten, bis eine asynchrone Operation abgeschlossen ist, bevor Sie von Ihrer Funktion zurückkehren. Es funktioniert einfach nicht so. Stattdessen geben Sie das Versprechen zurück und lassen den Aufrufer '.then()' darauf verwenden, um zu wissen, wann das Ergebnis bereit ist. – jfriend00
BTW, '.then (ret => {return ret;});' ist (fast) ein No-Op. –