我想涉及更多的逻辑,而不仅仅是 return new Promise(...);
来自一个函数。我不确定将 Promise 存储到变量中是否会改变其背后的“同步性”,因为我见过的每个示例都没有这样做。我还想将 Promise 存储到一个变量中,通常在最后返回,即使我不涉及条件,因为它似乎不利于调试,并且通常将所有逻辑都驻留在 return 语句中。
function doSomething(){
var promise_var1;
if (condition){
//Do something async, like an AJAX call to an API
setTimeout(function(){promise_var1 = Promise.resolve('a')}, 3000);
}else{
//Do something synchronous, like setting a default value
promise_var1 = Promise.resolve('b');
}
return promise_var1;
}
doSomething().then(function(value){console.log('c'+value)});
我目前正在获取
doSomething() is undefined
但是我尝试了各种方法,所以我可能在概念上误解了一些东西。
编辑:“重复”问题是询问如何处理 promise 内的条件。我问如何通过变量返回 promise (以实现 single exit )。这可能是不可能的,因为 JavaScript 是弱类型的,并且 Promise 变量返回与 Promise 返回可能表现不同,但如果有解决方案可以做到这一点,我更喜欢单退出而不是多次返回。
最佳答案
尝试这样写你的 promise 。
function doSomething(condition){
var promise_var1= new Promise(function(resolve, reject) {
if(condition){
//resolve after your async action
setTimeout(resolve('a'), 3000);
}else{
//resolve immediately
resolve('b');
}
});
return promise_var1;
}
关于javascript - 如何使用带有条件逻辑的 JavaScript Promise 并在返回之前存储到局部变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48574486/