Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 Monaca.getDeviceId()无法设置为变量_Javascript_Onsen Ui_Monaca - Fatal编程技术网

Javascript Monaca.getDeviceId()无法设置为变量

Javascript Monaca.getDeviceId()无法设置为变量,javascript,onsen-ui,monaca,Javascript,Onsen Ui,Monaca,我曾经尝试过多种方法将设备id设置为一个变量,这样它就可以在其他函数中使用,而不需要monaca回调。此代码不起作用: function getDevID(){ monaca.getDeviceId(function(id){ return id; }); } 这也不是: var devid = monaca.getDeviceId(function(id){return id;}); 因此,基本上,我如何将设备ID设置为一个变量,以便在整个应用程序中重复使用

我曾经尝试过多种方法将设备id设置为一个变量,这样它就可以在其他函数中使用,而不需要monaca回调。此代码不起作用:

function getDevID(){
    monaca.getDeviceId(function(id){
        return id;
    });
}
这也不是:

var devid = monaca.getDeviceId(function(id){return id;});
因此,基本上,我如何将设备ID设置为一个变量,以便在整个应用程序中重复使用

更新:基于对可能重复的异步调用的评论,我返回并分析了它,发现它是正确的。虽然从技术上讲这不是一篇重复的文章,但答案就在那篇关于异步工作流的文章中。我的问题可以通过以下方式解决:

var devid = '';

document.addEventListener ("deviceready", onDeviceReady, false);
function onDeviceReady() {
   monaca.getDeviceId(function(id){
      devid = id;
   });           
} 

然后,我就可以在加载后需要的任何地方使用devid了。

使用
devicerady
事件侦听器,就像您所做的那样,肯定是最好的方法,只需记住在完成后删除事件侦听器即可。尽管如此,如果您使用的是Onsen UI,还可以使用等待DOM初始化的
ons.ready()
。它可能会在
devicerady
后几毫秒被触发,但会为您保存一些代码并产生相同的结果。

可能会重复