我有一个while循环,我调用deferred方法,普通方法都返回一个值。问题是每次迭代都会进行while循环,而延迟方法和普通方法的返回值不是顺序的。延迟方法的一些返回值迟到了。如何使while循环等到延迟方法返回值。
请给我一个解决方案我坚持了好几天。
更新:伪代码
while(!stopProcess){
var pageno=findpageno(param);
findPageNoRecursively.done(pagenum){
pageno=pagenum;
}
return pageno;
}
任何帮助都将受到高度赞赏
答案 0 :(得分:0)
没有办法将异步方法更改为同步因为(由于我不完全清楚的原因)Javascript不提供对事件循环处理的访问。
在其他基于事件的编程环境中,您可以编写“嵌套事件循环”,您可以在处理事件时等待操作完成。这在Javascript中是不可能的,并且始终要求您的代码终止回隐藏的事件循环。
这就是为什么例如在node.js中提供方法的“Sync”变体的原因:在Javascript中不可能只给出异步的Sync
版本,因为没有同步等待原语。