Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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 函数实际上什么时候被调用?我如何控制它?_Javascript_Php_Jquery_Function_Asynchronous - Fatal编程技术网

Javascript 函数实际上什么时候被调用?我如何控制它?

Javascript 函数实际上什么时候被调用?我如何控制它?,javascript,php,jquery,function,asynchronous,Javascript,Php,Jquery,Function,Asynchronous,JS新手,试图通过jQuery的$创建一些简单的调用。访问API并处理接收到的数据 问题是-显然-这个函数被调用。。。嗯,什么时候都行。但不是在我期望它被调用的时候,即它在代码中的位置。我可以接受 做所有的事情,在得到。。。只要我能像以前一样使用父作用域中的循环、计数器等 首先从get调用中获取接收到的数据,然后对其进行处理 但这两者似乎都不可能 我想现在发生的事情是,这就是人们在谈论AJAX中的异步JavaScript时的意思。很好,但是我该如何解决我的问题呢 $document.ready

JS新手,试图通过jQuery的$创建一些简单的调用。访问API并处理接收到的数据

问题是-显然-这个函数被调用。。。嗯,什么时候都行。但不是在我期望它被调用的时候,即它在代码中的位置。我可以接受

做所有的事情,在得到。。。只要我能像以前一样使用父作用域中的循环、计数器等 首先从get调用中获取接收到的数据,然后对其进行处理 但这两者似乎都不可能

我想现在发生的事情是,这就是人们在谈论AJAX中的异步JavaScript时的意思。很好,但是我该如何解决我的问题呢

$document.readyfunction{ 对于变量i=0;i<5;i++{ console.logi; $.gettest.php,functiondata{ console.logi; }; console.logi; } };
欢迎使用异步编程

您将无法强制它让您循环您想要的方式。你必须按照异步的规则玩,你不能强迫它反过来

从根本上讲,您必须习惯以异步方式运行异步代码。这就是为什么它有一个回调来让您知道它已经完成了

如果您想串行处理多个异步请求,您需要做的是以某种方式将它们排队,然后在第一个请求完成时从队列中读取下一个请求

//只是一个伪异步函数,在完成之前等待100毫秒 const asyncFunction=value=>newpromiseresolve=>setTimeout=>resolvevalue,100; //要调用的数据 常量队列=['A','B','C','D','E']; const processQueue=队列=>{ 如果queue.length==0{ 回报承诺。决心; }否则{ 控制台。日志“正在运行”,队列[0]; 返回asyncFunctionqueue.shift .thenval=>{ console.logval; 返回进程队列 }; } } processQueuequeue
.then=>console.log'all done';主要问题:在一个循环中启动多个ajax确实是非顺序的,就像赛马一样。见鬼,你甚至会发现一个“0”在“4”之后返回;附加问题:这在某种程度上取决于您正在做什么,从哪里获得所需的数据,以及您希望从中获得什么。异步调用回调的事实并不是导致问题的原因,相反,导致问题的原因是直到循环完成后一段时间才调用回调。1。不知道为什么这个答案被否决了。非常感谢,现在我至少已经确认了我的问题是关于什么的。这对我来说并不明显。2.由于您的语法对我来说是新的,基本上是从昨天的JS开始的,jQuery被宣传为easy JS,现在我在这里,在给出您的建议之前,我可能会尝试避免异步编程。尽管如此,我还是非常欣赏这些代码片段。如果没有其他答案,我会在一天左右接受。考虑到反对票和重复票,这似乎是可能的。