用Promise设置状态混乱

时间:2016-12-22 03:14:32

标签: javascript react-native promise

对不起,当我试图解释我的确切问题时,这会有点笨拙。

我有一个函数,我从中返回一个承诺。我这样做是因为我必须使用一些异步代码,并希望确保我返回正确的布尔值

我用:

  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函数也会运行,好像诺言没有解决。

我假设这是国家的某种财产?我无法弄清楚为什么会这样工作的原因。这个问题有方法解决吗?谢谢!

1 个答案:

答案 0 :(得分:0)

@FuzzyTree是对的。我只想补充一点,你也可以选择永远不会绑定执行上下文的箭头函数:

testFunction()
.then(() => { 
    alert('Yes'); 
    this.setState({value: true});
}).catch(() => { 
    alert('No');
});
  

与函数表达式相比,箭头函数表达式具有更短的语法,并且不绑定它自己的this,arguments,super或new.target。箭头功能始终是匿名的。这些函数表达式最适合非方法函数,不能用作构造函数。

您可以在MDN site

中详细了解箭头功能