我目前正在为cordova实现一个插件。现在,我只是从相机获取角度并将其值返回到javascript。一切正常,我得到了正确的价值观。 但是我的方法“getAngles”中存在延迟时间问题以获得角度。
在此代码中,例如,显示的第一个警告表示:“水平:0,垂直:0”(代码中的第二个警报),此后是警告“水平:62.2,垂直:39.4”(第一个警告,在“getAngles”方法中)
你知道问题出在哪里吗?有没有办法避免这种延迟时间?
(我只想将角度值直接存储在“水平”和“垂直”变量中)
(也许在Android代码中有什么可做的?现在这个插件只在android上可用)
horizontal = 0;
vertical = 0;
function alertCameraAngles() {
helloWorld.getAngles(function(result) {
horizontal = result.horizontalAngle;
vertical = result.verticalAngle;
alert("horizontal: " + horizontal + "\nvertical: " + vertical);
}, function(error) {
alert("error");
});
alert("horizontal: " + horizontal + ", vertical: " + vertical);
}
答案 0 :(得分:1)
你无法避免这种延迟,因为javascript是异步的。当你调用getAngles时,你的插件正在越过原生端,检索一些数据等,并在回调中返回结果(应该如此)。同时,js代码继续运行(不阻止自己的执行)并执行第二个警报。相反,这既不是错误也不是坏行为,这正是它应该如何表现的。