Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript React Native-函数未返回正确的值_Javascript_React Native_Jsx - Fatal编程技术网

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编辑了我的答案,其中包含了一些关于“为什么”的信息和一个解释承诺的链接