【发布时间】:2014-05-19 16:04:20
【问题描述】:
我是网络开发的新手。来自德尔福/帕斯卡。我的长期目标是将遗留应用程序转换为 Web 环境。 (我正在使用这个应用程序:http://smartmobilestudio.com/ 将 pascal 交叉编译为 javascript,但这不应该影响这个问题)。我的遗留程序对服务器使用同步远程过程调用 (RPC)。我正在使用一种名为 EWD.js (http://robtweed.wordpress.com/2014/01/23/ewd-js-on-fhir/comment-page-1/) 的技术,它通过 node.js 进行异步调用。我在这里阅读了很多关于同步与同步调用的帖子。而且我担心如果我不能让 EWD 以同步的方式行动,我会很不走运。但我想更好地理解这一点。
考虑这个伪代码:
RPCcall
//business logic
RPCCall
//business logic
RPCCall
//business logic.
如果任何 RPC 调用失败,那么整个应用程序都应该失败。我读过“延续风格”的编码,我认为每个异步调用都会通过让 onMessage 处理程序在收到返回消息时调用回调函数来告诉在完成后从哪里获取补丁:
MyProc()
RPCCall(<name>,MyProc_2);
end;
MyProc2()
//business logic
RPCCall(<name, MyProc_3);
end;
MyProc3()
//business logic
RPCCall(<name, MyProc_3);
end.
这是可能的,虽然尴尬/丑陋。但是这样的情况呢?
RPCcall
//business logic
if conditionA then begin
if conditionA2 then begin
RPCCall
//business logic
end else
RPCCall
//business logic
end else begin
for i=1 to 10 do begin
RPCCall
//business logic
end;
end
end
我不知道如何将上述内容转换为延续样式。如果在逻辑树或循环中间有一个调用,我怎样才能跳回到那个状态?以前是如何做到的?完全重新编码遗留应用程序是不现实的。它非常庞大且复杂。
任何帮助将不胜感激。 谢谢
【问题讨论】:
-
我会研究 javascript 的延迟/承诺功能,它允许您链接异步调用。
-
为了一个简单的解决方案,你不能让
RPCcallajax 同步吗? -
@tik27 -- 我会检查的。谢谢!
-
@Bergi -- 我认为同步调用工作是最好的选择。但是,我需要使用 EWD,因为它连接到我的传统腮腺炎数据库。
标签: javascript synchronous legacy