Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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 while循环中的延迟方法_Javascript_Jquery_While Loop_Jquery Deferred - Fatal编程技术网

Javascript while循环中的延迟方法

Javascript while循环中的延迟方法,javascript,jquery,while-loop,jquery-deferred,Javascript,Jquery,While Loop,Jquery Deferred,我有一个while循环,在这个循环中我调用了一个deferred方法,normal方法都返回一个值。问题是每次迭代都会进行while循环,而延迟方法和正常方法的返回值不是顺序的。延迟方法的一些返回值来得很晚。如何使while循环等待deferred方法返回值 请给我一个解决方案,我已经在这里面呆了好几天了 更新:psuedo代码 while(!stopProcess){ var pageno=findpageno(param); findPageNoRecursi

我有一个while循环,在这个循环中我调用了一个deferred方法,normal方法都返回一个值。问题是每次迭代都会进行while循环,而延迟方法和正常方法的返回值不是顺序的。延迟方法的一些返回值来得很晚。如何使while循环等待deferred方法返回值

请给我一个解决方案,我已经在这里面呆了好几天了

更新:psuedo代码

while(!stopProcess){
        var pageno=findpageno(param);
        findPageNoRecursively.done(pagenum){
                 pageno=pagenum;
             }
        return pageno;
}

非常感谢您提供的任何帮助

无法将异步方法更改为同步方法,因为(出于我不完全清楚的原因)Javascript不提供对事件循环处理的访问

在其他基于事件的编程环境中,您可以编写“嵌套事件循环”,在该循环中,您可以在处理事件时等待操作完成。这在Javascript中是不可能的,您的代码总是被请求终止回隐藏的事件循环


这就是在node.js中使用“Sync”的原因提供了方法的变体:在Javascript中,由于不存在同步等待原语,因此无法在仅提供异步等待原语的情况下编写
Sync
版本。

请提供您的代码。如果while循环有一些异步操作,则您不能这样做。。。您需要与我们共享您的代码,以便我们建议任何解决方案您的伪代码是错误的。将
findpageno()
的结果分配给
pageno
每个迭代中定义的变量。之后,您将一个done处理程序分配给一个deferred,并在该处理程序中使用相同的变量名(即,您正在隐藏先前定义的
pageno
变量。这肯定是一个错误。您的延迟也在该循环中创建,或者您正在将done处理程序分配给同一个处理程序?尝试将您的代码分解为小的单一责任函数,并对问题给出更好的解释。..done(pagenum){pageno=pagenum;}返回pageno;语法错误:意外标记{。请看,这完全不清楚。您将
pageno
设置为同步函数(
findpageno
)的结果,但显然您甚至对该值不感兴趣,因为您想“等待”直到
pageno
findpagentorecursively
设置。那么,您真正感兴趣的是这两个
pageno
值中的哪一个?为什么调用另一个函数?我不认为对JS能做什么或不能做什么大惊小怪是有帮助的。另外,OP似乎对JS中的异步编程是如何工作以及他能做什么感到困惑it’他一开始就想达到目的。他的问题清楚地表明他有误解,但这根本不表明他发现了语言的缺陷。@Tomalak:我的不是咆哮。我只是观察到“嵌套事件循环”Javascript中没有这个概念,这会产生后果,其中一个原因是无法将异步函数转换为同步形式(OP似乎在问这个问题)。当然,这不是无意的,但我不知道选择的原因(尽管我从未为他们调查过)。好吧,那就不要咆哮了。:)我只是想提供一些平衡点,以便OP在阅读您的答案时不会给人留下他想要的东西无法完成的印象。他想要的东西是错误的,仅此而已。@6502,为了让javascript程序员理解,您必须提供对“事件循环”和“嵌套事件循环”的引用或定义。这些概念与javascript完全不同,尽管我们肯定会单独讨论“事件”和“循环”。我希望我的印象更感兴趣,而不是批评。