Html navigator.globalization.getPreferredLanguage未立即执行

Html navigator.globalization.getPreferredLanguage未立即执行,html,cordova,intel-xdk,Html,Cordova,Intel Xdk,我正在用Intel XDK和Cordova开发一个应用程序 在代码的开头,我使用这些行从设备中获取首选语言,并将其存储到名为“lang”的变量中: 然后我有一些代码行需要这个变量“lang”及其值,但由于某种原因,这个函数在最后执行,所以在所有代码执行期间,lang等于null 在继续之前,是否有任何方法确保此函数已完成且lang有其价值?是的,正如Ian在评论中所说的,只需将执行后需要执行的所有代码移到这行代码下面的函数中: lang=language.value 您也可以通过这种方式嵌套多个

我正在用Intel XDK和Cordova开发一个应用程序

在代码的开头,我使用这些行从设备中获取首选语言,并将其存储到名为“lang”的变量中:

然后我有一些代码行需要这个变量“lang”及其值,但由于某种原因,这个函数在最后执行,所以在所有代码执行期间,lang等于null


在继续之前,是否有任何方法确保此函数已完成且lang有其价值?

是的,正如Ian在评论中所说的,只需将执行后需要执行的所有代码移到这行代码下面的函数中:
lang=language.value


您也可以通过这种方式嵌套多个异步调用。

通常,在与任何Cordova API交互之前,您必须等待deviceready事件发出之后。这里很可能就是这种情况。此代码是在deviceready事件之后执行的。谢谢。好的-另一部分是函数调用将是异步的,因此它将在后台执行,其余的调用将执行。如果需要结果,请将该代码移动到函数(语言){}partI see。。。没有其他函数返回相同的值,而不需要异步函数吗?如果getPreferredLanguage函数直接返回language.value stringNot我所知,那么它会简单得多。插件进行本机调用以获取此值。它不会被WebView公开。
navigator.globalization.getPreferredLanguage(
                function (language) {
                    lang = language.value;
                },
                function () {alert('Err');}
            );