为什么返回的值在Typescript中为'undefined'?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么返回的值在Typescript中为'undefined'?相关的知识,希望对你有一定的参考价值。
我正在尝试创建一个函数,该函数将在变量中返回并存储某些数据。我正在尝试的代码如下。下面的代码应该获取xml文件,将其解析为json,然后根据jp查询返回一组值。
export function getEntities(testFileContent) {
parseString(testFileContent, async function (err, result) {
const entities = await jp.query(result, '$..entity_name[0]');
return entities;
});
}
实体变量已正确填充到函数内部,但是当尝试获取这样的数据时,它的名称为'undefined':
const data = await getEntities(testFileContent);
console.log(data) //will come as undefined
关于如何处理此问题的任何想法?
答案
这是因为您不返回任何东西,所以它是未定义的。这不是打字稿的问题。
您只是没有意识到要在匿名函数中返回它,因此它被丢弃了。
我将在几秒钟内为您提供一个闪电战的例子。
UPDATE
StackBlitz:https://stackblitz.com/edit/typescript-kyuhca
我希望这对您有用:)
另一答案
因此,最后我想出了解决方法。这就是我处理xml到json转换的方式,可以从函数提取cllback,并且可以在其他地方重用它。可能是很基本的事情,但也许有人面临相同的障碍:
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;
});
}
以上是关于为什么返回的值在Typescript中为'undefined'?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 nsmutabledictionary 中删除键当该键的值在 ios 中为空或 null 时?
如果具有相同的 id 和相同的值或值在 PHP 中为空,则合并行