Следующая ситуация:
function myFunction() {
return new Promise(function (resolve, reject) {
doSomething();
let myVariable = doSomethingElse();
let otherVariable = doOtherThings(myVariable);
return resolve(otherVariable);
});
}
Теперь я хочу, чтобы myVariable инициализировался не вызовом функции, а внутри обратного вызова или, скорее, в .then
обещания, возвращаемого асинхронной функцией.
function myFunction() {
return new Promise(function (resolve, reject) {
doSomething();
let myVariable;
asynchronousFunctionThatReturnsPromise().then(function(param) {
myVariable = doSomethingElse(param);
});
let otherVariable = doOtherThings(myVariable);
return resolve(otherVariable);
});
}
В идеале внешняя функция будет ждать, пока myVariable будет присвоено значение, пока она не выполнит doOtherThings(myVariable)
, но я думаю, что это невозможно в javascript.
К сожалению, я не могу просто поместить весь следующий код в функцию «обратного вызова», так как возвращаемые внешние функции зависят от результата.
Есть ли способ, которым я могу справиться с этим, в идеале без необходимости что-либо менять во внешней функции (myFunction)?