ожидание получения результатов в JavaScript - PullRequest
0 голосов
/ 13 февраля 2019

Я часто вызываю fetch, поэтому пытаюсь сделать ее многократно используемой функцией.

async function getXML(url) {
    const result = await fetch(url);
    const xml = await result.text().then(( str ) => {
        return new DOMParser().parseFromString(str, 'application/xml');
    });
    log(xml); //logs fine
}

Я вызываю ее с var xml = getXML(url).then( work_with_setup_xml(xml) );

Запускается функция 'work_with_setup_xml'без данных.Как далеко я от курса?

Ответы [ 3 ]

0 голосов
/ 13 февраля 2019

Это должно сделать это:

async function getXML(url) {
  const result = await fetch(url);
  const str = await result.text();
  return new DOMParser().parseFromString(str, 'application/xml');
}
0 голосов
/ 13 февраля 2019

После исправления оператора return в getXML (как предложено в других комментариях) ваш вызов неверен.Это должно быть либо

getXML(url).then(work_with_setup_xml);

или

getXML(url).then(function(xml) { work_with_setup_xml(xml) });

или

var xml = await getXML(url);
work_with_setup_xml(xml);
0 голосов
/ 13 февраля 2019

Так как насчет возврата данных для изменения?

async function getXML(url) {
    const result = await fetch(url);

    return await result.text().then(( str ) => {
        return new DOMParser().parseFromString(str, 'application/xml');
    });
}

И на самом деле, используя его:

let xml = getXML(url).then(xml => work_with_setup_xml(xml));
...