在promise解析后从函数返回结果

时间:2016-06-03 18:18:45

标签: javascript rsvp.js

所以我必须将一个简单的布尔值传递给库。为了获得返回值,我必须评估promise的解析(它进行异步调用)。所以我有这样的事情:

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
}

问题是这会返回一个承诺,而不是bool。我不能(没有分支第三方项目)修改调用代码来处理promise而不是bool。我知道promises的重点是能够在没有嵌套的情况下处理异步调用,但在这种情况下我需要同步处理事务。我不知道该怎么做。我查看了文档,但我没有看到这样做的方法。任何人都可以指出我在正确的方向吗?

1 个答案:

答案 0 :(得分:1)

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

如果您希望在解析承诺后运行一段代码,则它属于.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;
}