Это модификация исходного поста. Я смог разобрать мою проблему, и пока у меня есть обходной путь, я хотел бы понять, в чем дело (то есть я не совсем понимаю, почему он делает то, что делает ... и хочет)
Контекст: Это JS, запущенный в браузере, который вызывает прокси-сервер для решения проблем CORS. Прокси-сервер получает XML из RSS-канала.
Код браузера JS демонстрирует следующее поведение:
fetch(example.com/rss)
.then(response => response.text())
.then(str => new window.DOMParser().parseFromString(str,"text/xml"))
.then(data => {
const items = data.querySelectorAll("item");
//data is empty here so error
});
, когда я удаляю середину then
и выполняю parseFromString в другом обработчике, я получаю желаемые результаты:
fetch(example.com/rss)
.then(response => (response.text())
.then(data => {
var data = new DOMParser().parseFromString(data,"text/xml");
const items = data.querySelectorAll("item");
//works!!!
}
Может кто-нибудь объяснить разницу в поведении? Есть ли разница между Window.DOMParser
и new DOMParser
?