Javascript React Native-函数未返回正确的值
我有一个小代码片段:Javascript React Native-函数未返回正确的值,javascript,react-native,jsx,Javascript,React Native,Jsx,我有一个小代码片段: var okidok = parseString(myXml, (err, result) => { console.log(result.rss.channel[0].item); //Gives the output that I want. return result.rss.channel[0].item; }); console.log(okidok); //Output is rubbish. 为什么没有为okidok分配从parseStrin
var okidok = parseString(myXml, (err, result) => {
console.log(result.rss.channel[0].item); //Gives the output that I want.
return result.rss.channel[0].item;
});
console.log(okidok); //Output is rubbish.
为什么没有为okidok分配从parseString
返回的值。所有这些都发生在异步函数中
如果有人能开导我,我将非常感激 如果这发生在ES7异步函数中,您可以等待
parseString
函数来解决此问题:
首先,您需要提示parseString
(如果尚未启用):
然后,您可以等待该函数在异步函数中获得超出其作用域的结果:
async function parseXml(myXml) {
const result = await parseStringPromise(myXml);
var okidok = result.rss.channel[0].item;
}
请注意,您可以添加try/catch
语句来处理异步函数中的错误
编辑:我忘了告诉你原因
由于parseString
函数是一个节点样式的回调(“nodeback”)异步函数,因此不会有相同的结果。异步函数意味着您必须等待它解析才能得到结果。异步函数有几种不同的类型,主要的两种是基于回调的(比如parseString
)和承诺(可由解析。然后(fn)
或等待异步函数中的)
为了在函数上使用wait
,此函数需要返回一个承诺(这就是为什么我们承诺parseString
)
下面是一个更容易理解的promise教程:如果这是在ES7异步函数中发生的,您可以等待parseString
函数来解决此问题:
首先,您需要提示parseString
(如果尚未启用):
然后,您可以等待该函数在异步函数中获得超出其作用域的结果:
async function parseXml(myXml) {
const result = await parseStringPromise(myXml);
var okidok = result.rss.channel[0].item;
}
请注意,您可以添加try/catch
语句来处理异步函数中的错误
编辑:我忘了告诉你原因
由于parseString
函数是一个节点样式的回调(“nodeback”)异步函数,因此不会有相同的结果。异步函数意味着您必须等待它解析才能得到结果。异步函数有几种不同的类型,主要的两种是基于回调的(比如parseString
)和承诺(可由解析。然后(fn)
或等待异步函数中的)
为了在函数上使用wait
,此函数需要返回一个承诺(这就是为什么我们承诺parseString
)
这里有一个更容易理解的promise教程:我相信即使不使用async
也不会返回输出,而是传递给回调函数。我相信即使不使用async
也不会返回输出,而是传递给回调函数。我编辑了我的答案,并提供了一些关于“为什么”的信息和一个解释原因的链接promisesI编辑了我的答案,其中包含了一些关于“为什么”的信息和一个解释承诺的链接