Понимание поведения обещания при получении ответа - PullRequest
0 голосов
/ 27 апреля 2020

Это модификация исходного поста. Я смог разобрать мою проблему, и пока у меня есть обходной путь, я хотел бы понять, в чем дело (то есть я не совсем понимаю, почему он делает то, что делает ... и хочет)

Контекст: Это 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?

...