Ich versuche, ein Versprechen zu verwerfen, wie in der Dokumentation der API des Frameworks Ich verwende (Apollo-Stack) erklärt, aber es ist nicht ein Beispiel zeigen, heißt es nur gerade, dass ich das Versprechen abzulehnen, wenn es einen Fehler gibt, und ich versuche, die lästige YellowBox-Nachricht "Warnung: Mögliche Ablehnung von unangebotenen Versprechen" loszuwerden, wenn ich meine Anwendung ohne Internetverbindung ausprobiere.Mögliche unhandled Versprechen Ablehnung
Meine Methode tatsächlich funktioniert, um es in den Fang geht, und es zeigt die Fehlermeldung, aber ich halte die lästige YellowBox Nachricht bekommen, das ist, was zu beheben Ich versuche.
erste, was ich tat, geht an den Haken, wie erwartet, aber es zeigt eine YellowBox Nachricht Warning: Possible unhandled promise rejection...
return client.query({ query: gql`...`, }).then((data) => {
console.log(data);
data;
}).catch((error) => {
console.log(error);
error;
});
Das Letzte, was ich versucht habe:
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);
});
Auch das Hinzufügen des Tags Meteor, weil ich Apollo nicht finden konnte, aber es ist ziemlich dasselbe.
mehr Material Der Versuch, wie in den Antworten und Kommentare vorgeschlagen:
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);
});
andere:
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);
andere:
client.query({
query: gql`...`,
}).then(({data}) => {
console.log(data);
}, (error) => {
console.log(error);
});
ApolloStack: http://docs.apollostack.com/apollo-client/network.html sagt es, dass ein Versprechen zurück das sollte abgelehnt werden, wenn ein Fehler auftritt.
YellowBox erkennt Versprechungen und solche Dinge nicht behandelte und wirft Warnungen.
[.then()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) hat ein zweites Argument, eine Funktion, die Angebote mit Ablehnung –
ja ich habe bereits versucht, eine Funktion dort auch zu übergeben, lassen Sie mich wieder versuchen tho – octohedron
Sie haben es an den falschen Ort hinzugefügt, fügten Sie es als zweites Argument zu 'Promise' Konstruktor nicht' .then() ', sollte wie sein : '.then (() => {},() => {})' Aber es ist egal, wo ist das _ "YellowBox Nachricht" _? in der Dev Tools-Konsole? –