从Javascript中的回调函数获取结果
本文关键字:函数 获取 结果 回调 Javascript | 更新日期: 2023-09-27 18:18:06
我正在写一个Javascript函数,它将被c#应用程序调用。我可以从c#中调用函数,但是无法检索函数的结果。
所以我有以下结构:
var B = function() {
var A = function() {
var dfd = new $.Deferred();
// do something and then return the value I need
return dfd.resolve(x);
......
return dfd.promise();
}
$.when(A()).
then(function(x) {
// I can get the x I want here.
alert(x);
// What to do at this point?
});
}
由于A()
使用异步方法,我选择使用jQuery.promise()
方法以确保我得到A()
的最终结果。现在我想让B()
返回值x
到c#应用程序。有什么好的解决办法吗?
我假设你已经调用了你的Javascript函数通过调用WebView方法InvokeScriptAsync Js函数名作为参数。
这里的问题是你的JavaScript函数是异步的,因为它使用promise——所以你不能简单地在c#上获得它的返回值。IAsyncOperation在promise对象被返回时结束,而不是在它被解析时结束。
如果javascript函数是同步的:
InvokeScriptAsync函数的返回值是脚本调用的字符串结果-所以如果您等待它,您将获得结果。
MSDN文档:https://msdn.microsoft.com/en-us/library/windows.ui.xaml.controls.webview.invokescriptasync.aspx?f=255&MSPPError=-2147217396
然而,你总是可以通过调用windows.external来调用webView事件。从JavaScript调用字符串参数,并通过订阅webView ScriptNotify事件在c#上获得它。