我必须将我的代码迁移到Windows 8.1。问题是,当我引入本机调用时,8.1会使javascript(而不是WinJs)异步。示例场景。
f1(){
window.external.notify();(call to native c# code which calls f2 using Invokescript)
}
f2(){
//do stuff
}
f3(){
//do stuff
}
f1();
f3();
执行顺序是f1,f3,然后是f2。 f3不等待本机通话。我需要纠正这个问题。请提出任何建议。
答案 0 :(得分:0)
我认为没有办法在Javascript中等待通话结束,所以我建议使用某种回调机制。基本上,只调用f1
,并将要在参数中执行的下一个函数的名称传递给您的通知调用:
f1(){
window.external.notify("f3");
}
f2(){
//do stuff
}
f3(){
//do stuff
}
f1();
然后,在ScriptNotify
事件中,检索要执行的函数的名称,并在完成后使用InvokeScript
执行它:
void wb_ScriptNotify(object sender, NotifyEventArgs e)
{
// Do whatever you need
// ...
// Resume execution of Javascript code
wb.InvokeScript(e.Value, null);
}