Я пытаюсь отклонить обещание, как описано в документации API-структуры, используемой мной (стек Apollo), но в ней нет примера, в ней указано только, что у меня есть отклонить обещание, если есть ошибка, и я пытаюсь избавиться от раздражающего сообщения YellowBox «Предупреждение: возможно, отказ от неподготовленного обещания» при попытке моего приложения без подключения к Интернету.Возможное необработанное отклонение обещания
Мой метод действительно работает, он переходит к catch, и он показывает сообщение об ошибке, но я продолжаю получать раздражающее сообщение 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);
});
Кроме того, добавление тега Метеор, потому что не мог найти Аполлон, но это почти то же самое.
Стараясь больше материала, как это предлагается в ответы и комментарии:
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 он говорит, что возвращает обещание который должен быть отклонен при возникновении ошибки.
YellowBox обнаруживает необработанные обещания и такие вещи и бросает предупреждения.
[.then()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then) принимает второй аргумент, функция, которая занимается с отказом –
Да, я уже пробовал пропустить функцию там, позвольте мне попробовать еще раз – octohedron
Вы добавили его в неправильное место, вы добавили его как второй аргумент в конструктор 'Promise', а не' .then() ', должны быть похожи : '.then (() => {},() => {})' Но это может быть неважно, где это сообщение «YellowBox» _? в консоли Dev Tools? –