繁体   English   中英

为什么返回的值在 Typescript 中显示为“未定义”?

[英]Why the returned value comes as 'undefined' in Typescript?

我正在尝试创建一个函数,该函数将返回并将某些数据存储在变量中。 我正在尝试的代码如下。 下面的代码应该采用 xml 文件,将其解析为 json,然后根据 jp 查询返回一组值。

 export function getEntities(testFileContent) { parseString(testFileContent, async function (err, result) { const entities = await jp.query(result, '$..entity_name[0]'); return entities; }); }

实体变量在函数内被正确填充,但是当尝试获取这样的数据时,它显示为“未定义”:

 const data = await getEntities(testFileContent); console.log(data) //will come as undefined

关于我如何处理这个的任何想法?

这是因为你没有返回任何东西,所以它是未定义的。 这不是打字稿的问题。

你只是没有意识到你在匿名函数中返回它,所以它被丢弃了。

我将在一秒钟内为您制作一个 stackblitz 示例。

更新

StackBlitz: https ://stackblitz.com/edit/typescript-kyuhca

我希望这对你有用:)

所以最后我想出了如何处理它。 这就是我处理 xml 到 json 转换的方式,我可以从函数中提取回调,并且可以在其他地方重用它。 可能是非常基本的事情,但也许有人面临同样的障碍:

export function xmlToJSON(str, options) {
    return new Promise((resolve, reject) => {
        parseString(str, options, (err, jsonObj) => {
            if (err) {
                return reject(err);
            }
            resolve(jsonObj);
        });
    });
}

之后,我只需调用它并将数据存储在变量中:

const json = await xmlToJSON(string, null);

你的函数不返回任何东西

尝试

export async function getEntities(testFileContent) {
    return await parseString(testFileContent, async function (err, result) {
        const entities = await jp.query(result, '$..entity_name[0]');
        return entities;
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM