我的输入是可以预处理的 JavaScript 代码..
在某个函数中间的某个特定点,我需要用一些异步请求(例如异步 AJAX 请求)替换一个 token 。
在运行时:当异步请求返回时(正在执行回调),我需要返回到执行异步调用之前代码中完全相同的位置(具有相同的上下文)。
这可能吗?有什么想法吗?
请注意,(1)我可以根据自己的喜好预处理和更改代码..
(2) token 实际上可以在任何地方,在循环中或其他任何地方。(3) token 仅代表异步调用的位置,我可以解析整个文档
此代码可能在浏览器上或通过 Node.js 运行
示例代码:
function input(num){
num +=10;
<token>
return num;
}
会翻译成类似的东西
function input(num){
num +=10;
wait(async-request(...,callback));
return num;
}
更新:在我阅读您的回答后,这里有一个附加问题, Javascript: sync to async converter libs
最佳答案
有几个项目尝试使用延续将以同步模式编写的代码重写为异步代码。例如。您可能想看看:
https://github.com/Sage/streamlinejs
某些模式(循环、try/catch)可能比简单的线性流带来更多挑战,但我很确定在一般情况下这是一个可以解决的问题。不过,我认为您无法通过简单的 token 替换来完成此操作 - 您需要解析 javascript 并对其进行转换。
关于Javascript,异步并返回到完全相同的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6218559/