等待在javascript中获取结果

时间:2019-02-13 19:20:12

标签: javascript async-await fetch

我经常调用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 :(得分:2)

这应该做到:

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

答案 1 :(得分:2)

修正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);

答案 2 :(得分:0)

那么返回更改数据呢?

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));