Будучи асинхронным, нет гарантии узнать, когда обещание будет разрешено. Возможно, вам придется подождать некоторое время (в зависимости от того, что вы делаете).
Типичный способ продолжения исполнения после обещания заключается в выполнении цепочки или использовании функций обратного вызова.
Как Обратный звонок
Ваш пример кода (для меня) предполагает использование обратного вызова.
exports.myFunction = function(callback){
myPromise.doThis().then(ret => {
callback(ret);
});
}
Затем с помощью будет выглядеть аналогично:
var myFunction = require('pathToFile').myFunction;
myFunction(function(ret){
//Do what's required with ret here
});
Edit:
Как @torazaburo упоминалось, функция может быть сжата в:
exports.myFunction = function(callback){
myPromise.doThis().then(callback);
}
As a Promise
exports.myFunction = function(){
//Returnes a promise
return myPromise.doThis();
}
Затем с помощью будет выглядеть так:
var myFunction = require('pathToFile').myFunction;
myFunction().then(function(ret){
//Do what's required with ret here
});
вы не можете. вы можете дать ему только обратный вызов и вызвать этот обратный вызов из вызова 'then', или вы вернете другое обещание. –
В Javascript вы не можете« дождаться »завершения операции async перед возвратом из вашей функции. Это просто не работает. Вместо этого вы возвращаете обещание и позволяете вызывающему абоненту использовать '.then()' на нем, чтобы знать, когда результат будет готов. – jfriend00
BTW, '.then (ret => {return ret;});' is (почти) no-op. –