Мне нужен способ получить обещание, вызвать его, чтобы проверить возвращаемое значение, а затем вернуть это обещание точно так же, как это было в других частях системы.В контексте я пытаюсь изменить API выборки из скрипта GraseMonkey, чтобы я мог изменить возвращаемые данные.Я проверяю это, вызывая .json () в ответе.Однако, если я не изменяю данные, мне нужно вернуть объект, точно представляющий исходный вызов API выборки, чтобы код страницы не видел разницы.Но когда я попытался вернуть объект, я получаю сообщение об ошибке, что ответ уже использовался, и теперь я теряюсь в стеке Обещаний, которые я не могу выполнить (я не являюсь родным JS))
Приведенный ниже код - это то, что у меня уже есть, и он работает, но он не совсем приемлем, поскольку дублирует каждый другой запрос, который не был поврежден.
function newFetch(){
if (needsToBeModified(arguments[0])) {
response = null;
return oldFetch.apply(this, arguments)
.then(r => {
response = r;
return r.json();
})
.then(
j => {
j = processJSON(j);
return new Promise((resolve, rej) => {
response.json = () => new Promise((resolve, reject) => resolve(j));
resolve(response);
});
},
(fail) => {
return oldFetch.apply(this, arguments)
//How can I avoid making this call here again?
}
);
} else {
return oldFetch.apply(this, arguments);
}
}
Пожалуйста, кто-нибудь может мне сказатьспособ заглянуть в JSON, и если это выдает ошибку, возвращая исходное обещание из fetch без необходимости повторного вызова?
Спасибо.