在承诺解决后从函数返回结果
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;
}
所以我必须将一个简单的布尔值传递给一个库。为了获得 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;
}