![](/img/trans.png)
[英]Why a promise with a value undefined is returned from “findLocation()”?
[英]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.