Javascript 可能的错误未处理承诺拒绝(React和Class)
我希望在类中使用一个承诺,并依赖于是否解析或拒绝我的组件的类的另一个方法。 这里我留下一个密码Javascript 可能的错误未处理承诺拒绝(React和Class),javascript,reactjs,react-native,promise,callback,Javascript,Reactjs,React Native,Promise,Callback,我希望在类中使用一个承诺,并依赖于是否解析或拒绝我的组件的类的另一个方法。 这里我留下一个密码 var promise = new Promise( (resolve, reject) => { let name = 'DaveA' if (name === 'Dave') { resolve("Promise resolved successfully"); } else { reject(Error("Promise
var promise = new Promise( (resolve, reject) => {
let name = 'DaveA'
if (name === 'Dave') {
resolve("Promise resolved successfully");
}
else {
reject(Error("Promise rejected"));
}
});
class App extends React.Component
{
constructor(props){
super(props);
this.state = {
name: '',
}
}
Bien(result){
alert("OK")
this.setState({name: result});
}
Mal(error){
alert("FALLO")
this.setState({name: error});
}
componentDidMount() {
let obj = {newName: ''};
promise.then( result => {
this.Bien(result)
}, function(error) {
this.Mal(error)
});
我创造了一个简单的承诺。
我称之为来自组件的。
在我调用另一个方法之后。
但从来没有这样做过。
出现错误:
WARN Possible Unhandled Promise Rejection (id: 0):
TypeError: this.Mal is not a function. (In 'this.Mal(error)', 'this.Mal' is undefined)
请使用.catch()
,如下所示:
componentDidMount() {
let obj = {newName: ''};
promise.then(result => {
this.Bien(result)
})
.catch((error) => {
this.Mal(error)
});
}
因此,总代码应如下所示:
import React, { Component } from 'react';
var promise = new Promise((resolve, reject) => {
let name = 'DaveA'
if (name === 'Dave') {
resolve("Promise resolved successfully");
}
else {
reject(Error("Promise rejected"));
}
});
class App extends React.Component
{
constructor(props){
super(props);
this.state = {
name: '',
}
}
Bien(result) {
alert("OK")
this.setState({name: result});
}
Mal(error) {
alert("FALLO")
this.setState({name: error});
}
componentDidMount() {
let obj = {newName: ''};
promise.then(result => {
this.Bien(result)
})
.catch(error => {
this.Mal(error)
});
}
render() {
return <></>
}
}
export default App;
import React,{Component}来自'React';
var承诺=新承诺((解决、拒绝)=>{
让name='DaveA'
如果(姓名=='Dave'){
解决(“承诺成功解决”);
}
否则{
拒绝(错误(“拒绝承诺”);
}
});
类应用程序扩展了React.Component
{
建造师(道具){
超级(道具);
此.state={
名称:“”,
}
}
边(结果){
警报(“正常”)
this.setState({name:result});
}
错误(错误){
警报(“法洛”)
this.setState({name:error});
}
componentDidMount(){
设obj={newName:''};
承诺。然后(结果=>{
本.边(结果)
})
.catch(错误=>{
这个.Mal(错误)
});
}
render(){
返回
}
}
导出默认应用程序;
它在“react”上正常工作:“16.12.0”。结果警告构造函数中的“FALLO”。添加this.Mal=this.Mal.bind(this)删除函数(error){…}部分,并在promise.then()的结尾部分添加.catch()。请检查下面的答案。不,不要使用
catch
,特别是在OP的情况下。如果没有catch,你就不能使用它。当然你可以。注意,catch
只是另一个调用的别名,然后
调用处理程序作为第二个参数。