可能未处理的承诺拒绝
Possible unhandled promise rejection
我正在尝试拒绝承诺,正如我正在使用的框架(Apollo 堆栈)的 API 文档中所解释的那样,但它没有显示示例,它仅说明了这一点如果有错误,我必须拒绝承诺,并且我试图在没有互联网连接的情况下尝试我的应用程序时摆脱烦人的 YellowBox 消息 "Warning: Possible unhanded promise rejection"。
我的方法确实有效,它进入捕获状态并显示错误消息,但我一直收到烦人的 YellowBox 消息,这就是我正在尝试解决的问题。
我做的第一件事,如预期的那样去捕获,但它显示了一条 YellowBox 消息 Warning: Possible unhandled promise rejection...
return client.query({ query: gql`...`, }).then((data) => {
console.log(data);
data;
}).catch((error) => {
console.log(error);
error;
});
我最后尝试过的事情:
var promise = new Promise(function(resolve, reject) {
//async call, client.query(..) "returns a promise that should be rejected
//if there is an error message..."
client.query({ query: gql`...`, }).then(({data}) => {
console.log(data);
resolve(data);
}).catch((error) => {
console.log(error); // goes right here, works.
reject(error.message);
});
});
//just trying this out
promise.then((data) => {
console.log(data);
}).catch((error) => {
console.log(error);
});
此外,添加标签 Meteor,因为找不到 Apollo,但它几乎是一回事。
按照答案和评论中的建议尝试更多内容:
var promise = new Promise(function(resolve, reject) {
client.query({
query: gql`...`,
}).then(({data}) => {
console.log(data);
resolve(data);
}).catch((error) => {
reject(error.message);
});
}, (error) => {
console.log(error);
});
另一个:
var callback = {
success: function(data) {
console.log("SUCCESS");
},
error: function(data) {
console.log("ERROR");
}
};
var promise = new Promise(function(resolve, reject) {
client.query({
query: gql`...`,
}).then(({data}) => {
console.log(data);
resolve(data);
}).catch((error) => {
console.log(error);
reject(error.message);
});
return promise;
});
promise.then(callback.success, callback.error);
另一个:
client.query({
query: gql`...`,
}).then(({data}) => {
console.log(data);
}, (error) => {
console.log(error);
});
ApolloStack:http://docs.apollostack.com/apollo-client/network.html 它说,returns 如果发生错误,应该拒绝的承诺。
YellowBox 检测未处理的承诺和类似的事情并抛出警告。
尝试处理拒绝回调中的错误而不是捕获回调:
var promise = new Promise(function(resolve, reject) {
client.query({ query: gql`...`, }).then(({data}) => {
console.log(data);
resolve(data);
}, (error)=>{
console.log(error); // goes right here, works.
reject(error.message);
})
});
如果 client.query 为您做到了,就没有理由创建承诺...
// no new Promise here, just make the query
return client.query({ query: gql`...`, }).then((data) => {
console.log(data);
data;
}).catch((error) => {
console.log(error);
error;
});
找到问题,框架正在处理,很快就会修复,所以暂时没有正确答案。
我会复制粘贴正确的方式(如问题所示)。它也是从官方框架的文档中复制的,该文档显示了如何执行此操作,因此下一个遇到相同问题的人将知道他们将不得不等待几天才能修复它。
client.query({ query: gql`...`, }).then((data) => {
console.log(data);
}).catch((error) => {
console.log(error);
});
我正在尝试拒绝承诺,正如我正在使用的框架(Apollo 堆栈)的 API 文档中所解释的那样,但它没有显示示例,它仅说明了这一点如果有错误,我必须拒绝承诺,并且我试图在没有互联网连接的情况下尝试我的应用程序时摆脱烦人的 YellowBox 消息 "Warning: Possible unhanded promise rejection"。
我的方法确实有效,它进入捕获状态并显示错误消息,但我一直收到烦人的 YellowBox 消息,这就是我正在尝试解决的问题。
我做的第一件事,如预期的那样去捕获,但它显示了一条 YellowBox 消息 Warning: Possible unhandled promise rejection...
return client.query({ query: gql`...`, }).then((data) => {
console.log(data);
data;
}).catch((error) => {
console.log(error);
error;
});
我最后尝试过的事情:
var promise = new Promise(function(resolve, reject) {
//async call, client.query(..) "returns a promise that should be rejected
//if there is an error message..."
client.query({ query: gql`...`, }).then(({data}) => {
console.log(data);
resolve(data);
}).catch((error) => {
console.log(error); // goes right here, works.
reject(error.message);
});
});
//just trying this out
promise.then((data) => {
console.log(data);
}).catch((error) => {
console.log(error);
});
此外,添加标签 Meteor,因为找不到 Apollo,但它几乎是一回事。
按照答案和评论中的建议尝试更多内容:
var promise = new Promise(function(resolve, reject) {
client.query({
query: gql`...`,
}).then(({data}) => {
console.log(data);
resolve(data);
}).catch((error) => {
reject(error.message);
});
}, (error) => {
console.log(error);
});
另一个:
var callback = {
success: function(data) {
console.log("SUCCESS");
},
error: function(data) {
console.log("ERROR");
}
};
var promise = new Promise(function(resolve, reject) {
client.query({
query: gql`...`,
}).then(({data}) => {
console.log(data);
resolve(data);
}).catch((error) => {
console.log(error);
reject(error.message);
});
return promise;
});
promise.then(callback.success, callback.error);
另一个:
client.query({
query: gql`...`,
}).then(({data}) => {
console.log(data);
}, (error) => {
console.log(error);
});
ApolloStack:http://docs.apollostack.com/apollo-client/network.html 它说,returns 如果发生错误,应该拒绝的承诺。
YellowBox 检测未处理的承诺和类似的事情并抛出警告。
尝试处理拒绝回调中的错误而不是捕获回调:
var promise = new Promise(function(resolve, reject) {
client.query({ query: gql`...`, }).then(({data}) => {
console.log(data);
resolve(data);
}, (error)=>{
console.log(error); // goes right here, works.
reject(error.message);
})
});
如果 client.query 为您做到了,就没有理由创建承诺...
// no new Promise here, just make the query
return client.query({ query: gql`...`, }).then((data) => {
console.log(data);
data;
}).catch((error) => {
console.log(error);
error;
});
找到问题,框架正在处理,很快就会修复,所以暂时没有正确答案。
我会复制粘贴正确的方式(如问题所示)。它也是从官方框架的文档中复制的,该文档显示了如何执行此操作,因此下一个遇到相同问题的人将知道他们将不得不等待几天才能修复它。
client.query({ query: gql`...`, }).then((data) => {
console.log(data);
}).catch((error) => {
console.log(error);
});