所以我必须将一个简单的布尔值传递给库。为了获得返回值,我必须评估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的重点是能够在没有嵌套的情况下处理异步调用,但在这种情况下我需要同步处理事务。我不知道该怎么做。我查看了文档,但我没有看到这样做的方法。任何人都可以指出我在正确的方向吗?
答案 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;
}