对不起,当我试图解释我的确切问题时,这会有点笨拙。
我有一个函数,我从中返回一个承诺。我这样做是因为我必须使用一些异步代码,并希望确保我返回正确的布尔值
我用:
return new Promise(function (resolve, reject) {
根据我在循环中找到的内容解决或拒绝承诺。 这就是我如何称之为特定功能..我在其中命名" testFunction"
testFunction()
.then(function() { alert('Yes');
})
.catch(function() { alert('No');
});
这一切都运行正常..如果它解决它警报是的,如果没有它警告否......
但是,我需要以某种方式存储结果,所以我尝试使用状态这样做:
testFunction()
.then(function() { alert('Yes');
this.setState({
value: true
})
})
.catch(function() { alert('No');
});
基本上只需将promise设置为true即可解析。 然而当我这样做时,.catch函数也会运行,好像诺言没有解决。
我假设这是国家的某种财产?我无法弄清楚为什么会这样工作的原因。这个问题有方法解决吗?谢谢!
答案 0 :(得分:0)
@FuzzyTree是对的。我只想补充一点,你也可以选择永远不会绑定执行上下文的箭头函数:
testFunction()
.then(() => {
alert('Yes');
this.setState({value: true});
}).catch(() => {
alert('No');
});
与函数表达式相比,箭头函数表达式具有更短的语法,并且不绑定它自己的this,arguments,super或new.target。箭头功能始终是匿名的。这些函数表达式最适合非方法函数,不能用作构造函数。
您可以在MDN site
中详细了解箭头功能