Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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 如何使用setTimeout并获取返回变量?_Javascript_Google Maps Api 3 - Fatal编程技术网

Javascript 如何使用setTimeout并获取返回变量?

Javascript 如何使用setTimeout并获取返回变量?,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我有一个功能地理代码,可以工作。。。我试图实现一个延迟以防止超过查询限制的错误,下面是我的javascript: tmpResult = null; setTimeout(function() { tmpResult = geocode(facilities[j],cities[j],states[j]); }, 100); 变量tmpResult具有my geocode的结果。。但是,当我运行脚本时,tmpResult为null。。有什么我遗漏的吗 谢谢 tmpResult在s

我有一个功能地理代码,可以工作。。。我试图实现一个延迟以防止超过查询限制的错误,下面是我的javascript:

tmpResult = null; 
setTimeout(function() { 
    tmpResult = geocode(facilities[j],cities[j],states[j]);
}, 100); 
变量
tmpResult
具有my geocode的结果。。但是,当我运行脚本时,
tmpResult
null
。。有什么我遗漏的吗


谢谢

tmpResult
setTimeout()
运行及之后完全有效。您的问题可能是在运行
setTimeout()
之前试图使用
tmpResult
。记住,它将在未来运行100毫秒。在此之前,您的其他javascript将继续运行

您需要做的是在
setTimeout()
中使用
tmpResult
的值,或者调用某个函数并将
tmpResult
的值传递给它

setTimeout(function() { 
    var tmpResult = geocode(facilities[j],cities[j],states[j]);
    callMyFunction(tmpResult);
}, 100);
setTimeout()
是异步的,使用它时无法同步编程。您必须异步编码,这意味着
tmpResult
的值在计时器回调执行之前无效,因此在计时器回调触发之前,您不能尝试使用它

正如您所发现的,如果您尝试这样做:

var tmpResult = null;
setTimeout(function() { 
    tmpResult = geocode(facilities[j],cities[j],states[j]);
}, 100);
console.log(tmpResult);
它将不起作用,因为
console.log(tmpResult)
语句将在计时器触发之前运行,因此
tmpResult
还没有值



仅供参考,您应该确保
geocode()
也不是一个异步函数,因为如果是,那么您也必须使用它异步编码。

tmpResult
setTimeout()
运行时以及之后完全有效。您的问题可能是在运行
setTimeout()
之前试图使用
tmpResult
。记住,它将在未来运行100毫秒。在此之前,您的其他javascript将继续运行

您需要做的是在
setTimeout()
中使用
tmpResult
的值,或者调用某个函数并将
tmpResult
的值传递给它

setTimeout(function() { 
    var tmpResult = geocode(facilities[j],cities[j],states[j]);
    callMyFunction(tmpResult);
}, 100);
setTimeout()
是异步的,使用它时无法同步编程。您必须异步编码,这意味着
tmpResult
的值在计时器回调执行之前无效,因此在计时器回调触发之前,您不能尝试使用它

正如您所发现的,如果您尝试这样做:

var tmpResult = null;
setTimeout(function() { 
    tmpResult = geocode(facilities[j],cities[j],states[j]);
}, 100);
console.log(tmpResult);
它将不起作用,因为
console.log(tmpResult)
语句将在计时器触发之前运行,因此
tmpResult
还没有值



仅供参考,您应该确保
geocode()
也不是一个异步函数,因为如果是,那么您也必须使用它异步编码。

tmpResult
setTimeout()
运行时以及之后完全有效。您的问题可能是在运行
setTimeout()
之前试图使用
tmpResult
。记住,它将在未来运行100毫秒。在此之前,您的其他javascript将继续运行

您需要做的是在
setTimeout()
中使用
tmpResult
的值,或者调用某个函数并将
tmpResult
的值传递给它

setTimeout(function() { 
    var tmpResult = geocode(facilities[j],cities[j],states[j]);
    callMyFunction(tmpResult);
}, 100);
setTimeout()
是异步的,使用它时无法同步编程。您必须异步编码,这意味着
tmpResult
的值在计时器回调执行之前无效,因此在计时器回调触发之前,您不能尝试使用它

正如您所发现的,如果您尝试这样做:

var tmpResult = null;
setTimeout(function() { 
    tmpResult = geocode(facilities[j],cities[j],states[j]);
}, 100);
console.log(tmpResult);
它将不起作用,因为
console.log(tmpResult)
语句将在计时器触发之前运行,因此
tmpResult
还没有值



仅供参考,您应该确保
geocode()
也不是一个异步函数,因为如果是,那么您也必须使用它异步编码。

tmpResult
setTimeout()
运行时以及之后完全有效。您的问题可能是在运行
setTimeout()
之前试图使用
tmpResult
。记住,它将在未来运行100毫秒。在此之前,您的其他javascript将继续运行

您需要做的是在
setTimeout()
中使用
tmpResult
的值,或者调用某个函数并将
tmpResult
的值传递给它

setTimeout(function() { 
    var tmpResult = geocode(facilities[j],cities[j],states[j]);
    callMyFunction(tmpResult);
}, 100);
setTimeout()
是异步的,使用它时无法同步编程。您必须异步编码,这意味着
tmpResult
的值在计时器回调执行之前无效,因此在计时器回调触发之前,您不能尝试使用它

正如您所发现的,如果您尝试这样做:

var tmpResult = null;
setTimeout(function() { 
    tmpResult = geocode(facilities[j],cities[j],states[j]);
}, 100);
console.log(tmpResult);
它将不起作用,因为
console.log(tmpResult)
语句将在计时器触发之前运行,因此
tmpResult
还没有值



仅供参考,您应该确保
geocode()
也不是一个异步函数,因为如果是,那么您也必须使用它异步编码。

在翻阅了许多页面,寻找setTimeout()的完整解释之后,这是我遇到的最好的一个。非常感谢您的详细回复!在翻阅了许多页面,寻找setTimeout()的详细解释之后,这是我遇到的最好的解释。非常感谢您的详细回复!在翻阅了许多页面,寻找setTimeout()的详细解释之后,这是我遇到的最好的解释。非常感谢您的详细回复!在翻阅了许多页面,寻找setTimeout()的详细解释之后,这是我遇到的最好的解释。非常感谢您的详细回复!