我有一个NPAPI插件,我改为原生消息,NPAPI是同步的,插件也是如此。因为铬沾染了NPAPI
现在我必须将其更改为异步调用,我试图找到一种方法来处理回调。我已将消息传递包装到一个类中,以处理从内容脚本到后台脚本的特定消息。
我通过将其设置为回调函数的内部数组以及函数特定的结果回调来处理类中的回调
但是我发现更改页面代码有困难
作为一个例子 我们假设旧代码就像
res = npClass.function1 (var1,var2);
if(res == 'someval')
npClass.function2()
npClass.function1(var2,res.substring(2,3))
and so on
既然所有函数都是异步的,我必须将代码改为或多或少像这样
npClass.function1(var1,var2, function(res)
{
if(res == 'someval')
npClass.function2(function(){
npClass.function1(var2,res.substring(2,3), function(res)
{});
npClass.function1(var2,res.substring(2,3);
}
}
并且嵌套将继续,而这不是我期望的那样。
我现在能够想到的是,如果我更改页面代码以使得使用扩展的代码部分作为继承自其他消息处理类的类,那么我可以使用内部结构在消息类
中调用新类回调的回调但即使我这样做,我的代码也会非常分散
它将是这样的
PageClass.prototype.functionL()
{
functions1(functionb) 'from inheritance
}
PageClass.functionb(res)
{
if(res == 'some value)
function2( functionq) 'from inheritance
}
这仍然不适合我,我相信我必须处理很多内容,而且这需要对页面代码的结构进行大的改动。
我已经四处寻找找到任何方法在javascript中进行异步调用同步,但没有找到任何合理的解决方案。
我不是javascript的专家,我需要探索的想法, 有人可以在这里指导我