从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中的回调函数获取结果

我假设你已经调用了你的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#上获得它。