在承诺解决后从函数返回结果

Returning a result from a function after a promise resolves

所以我必须将一个简单的布尔值传递给一个库。为了获得 return 的值,我必须评估承诺的解决方案(它进行异步调用)。所以我有这样的东西:

import {funcThatReturnsPromise} from 'some-module';

function someFunc(someParam) {
   funcThatReturnsPromise(someParam).then(theResult => someOtherFunc(theResult));
} 

function someOtherFunc(someParam) {
   ....
   return true; // do some things and return a bool
}

问题是这个 return 是一个承诺,而不是 bool。我不能(不分叉第三方项目)修改调用代码来处理承诺而不是布尔值。我知道 promises 的全部意义在于能够在不嵌套的情况下处理异步调用,但在这种情况下,我需要同步处理事情。我不知道该怎么做。我查看了文档,但没有找到执行此操作的方法。谁能在这里指出我正确的方向?

处理 promises 和异步代码可能会令人困惑,但关键是不要过于复杂。不要试图去发明轮子,试着理解你的代码在这个结构中的位置。

如果你想在 promise 的 resolution 之后 运行 一段代码,那么它属于 .then 回调。听起来你有一半的代码在回调中,一半的代码在回调之外。

稍微扩展一下您的代码,我假设您正在尝试做一些事情来达到以下效果;

function someFunc(someParam) {
   funcThatReturnsPromise(someParam).then(theResult => someOtherFunc(theResult));

   if(someOtherFunc(theResult)){
       alert('A RESULT!');
   }
} 

function someOtherFunc(someParam) {
   ....
   return true;
}

但是你应该做的是;

function someFunc(someParam) {
   funcThatReturnsPromise(someParam).then(theResult => {
       funcResult = someOtherFunc(theResult)
       if(funcResult){
           alert('A RESULT!')
       }
   });

} 

function someOtherFunc(someParam) {
   ....
   return true;
}