我正在尝试使用setTimeout编写一个简单的代码,并且setTimeout不会等待它所设想的时间并且代码立即执行.我究竟做错了什么?
setTimeout(testfunction(), 2000);
Run Code Online (Sandbox Code Playgroud) 简单的说...
为什么
setTimeout('playNote('+currentaudio.id+', '+noteTime+')', delay);
Run Code Online (Sandbox Code Playgroud)
完美地工作,在指定的延迟后调用函数,但是
setTimeout(playNote(currentaudio.id,noteTime), delay);
Run Code Online (Sandbox Code Playgroud)
同时调用函数playNote?
(这些setTimeout()s在for循环中)
或者,如果我的解释太难阅读,这两个函数之间有什么区别?
我正在尝试使用Lambda函数将请求模块的API调用大约200-300次.我需要在每个调用之间添加第二个,所以我没有得到429响应.我已经尝试了几种不同的方法来实现这一点,但似乎忽略了代码来减慢速度.
人们通常如何减慢AWS lambda中的这些请求?如果我可以在循环中插入一些类似utilities.sleep(1000)的内容,以使其在继续之前等待一秒钟,那就太棒了.我确信这个问题有一个简单的解决方案,但我见过的所有例子似乎都让它变得复杂.
function findProjects(items){
var toggleData = [];
for( var i = 0; i < items.length; i++ ){
setTimeout( callToggle( items[i] ), 1000 );
}
function callToggle( data ){
request({
'url': 'https://www.toggl.com/api/v8/projects/' + data.toggle.data.id,
'method': 'GET',
'headers': {
'Content-Type': 'application/json',
'Accept': 'application/json'
},
'auth': {
'user': 'xxxxxxx',
'pass': 'api_token'
}}, function( error, response, body ){
if( error ) {
console.log( error );
context.done( null, error );
} else {
console.log(response.statusCode, "toggle projects were listed");
var info = …Run Code Online (Sandbox Code Playgroud)