我的代码是:javascript函数响应延迟
var myvarible = "0";
wialon.util.Gis.getLocations(coordsc,function(code,responceval) {
myvarible = responceval;
})
console.log(myvarible); // output is 0
我怎样才能解决我的问题?我认为,虽然它返回响应代码console.log首先运行。请帮我解决问题。
我的代码是:javascript函数响应延迟
var myvarible = "0";
wialon.util.Gis.getLocations(coordsc,function(code,responceval) {
myvarible = responceval;
})
console.log(myvarible); // output is 0
我怎样才能解决我的问题?我认为,虽然它返回响应代码console.log首先运行。请帮我解决问题。
假设这依赖于浏览器的地理定位功能,您不能“修复”这个问题。这是异步编码的本质。
在您的函数wialon.util.Gis.getLocations()
中传入回调。所以在这个调用的(异步)执行之后,你的回调将被执行。
同时执行代码的其余部分,这导致了console.log(myvarible);
导致0
相应地更改您的编码风格,并把相关的所有代码上myvarible
回调本身还是一个功能,那就是在回调中调用。这种方式仅在设置了myvarible
后执行。
因此,要么:
var myvarible = "0";
wialon.util.Gis.getLocations(coordsc,function(code,responceval){
myvarible = responceval;
// here comes code using myvarible
console.log(myvarible);
});
或
var myvarible = "0";
function doStuff(){
// here comes code using myvarible
console.log(myvarible);
};
wialon.util.Gis.getLocations(coordsc,function(code,responceval){
myvarible = responceval;
doStuff();
});
如果我理解正确的,之前console.log(myvarible);
运行geLocations()
的回报,这就是为什么你得到myvariable
的旧值。
试试这个:
var myvarible = "0";
wialon.util.Gis.getLocations(coordsc,function(code,responceval){
myvarible = responceval;
console.log(myvarible);
})
这意味着你必须把所有的myvariable
的相关代码内的getLocations()
回调函数。
由于Sirko解释,你必须把你登录到回调函数,像这样:
var myvarible = "0";
wialon.util.Gis.getLocations(coordsc,function(code,responceval){
myvarible = responceval;
console.log(myvarible); // output will be responceval
});
请添加一些情况下,代码和对问题的描述。 –
如果你描述你的问题是**,如果你想要我们的建议如何解决它,这将有所帮助。 –