dart - 如何在 dart 中使用 javascript 返回的代理

标签 dart dart-js-interop

我目前正在从 dart 调用 JavaScript 中的一个函数,该函数接受 JSON 字符串和成功回调。

来自 JavaScript 的回调应该以 JSON 字符串形式返回响应。但是我无法从 dart 中返回的代理获取此信息。调试时我在代理上看到的只有 _id、_port 和 hashCode。

我如何从代理获取所需的信息?

代码片段:

void init()
{
  _mJSProxy= js.retain(new js.Proxy(js.context.Test));}
}

void testRequest(String p_request)
{
  _mJSProxy.test(js.map(p_request), new js.Callback.once(onCallbackSuccess));
}

void onCallbackSuccess(var response, var httpRequest)
{
  // response & httpRequest is a Proxy
  // How to get the required information from them?
}

最佳答案

当返回类型不是boolnumString时,使用js.Proxy对象或html.Element。当返回 js.Proxy 时,您必须知道底层 Js 对象的结构是什么才能使用它。例如,如果 Js 对象是 XMLHttpRequest你将能够像这样使用它:

js.Proxy p = // proxy on XMLHttpRequest
String result = p.responseText; 
// '.responseText' is handled by noSuchMethod and the call is done on Js side

在您的情况下,如果 responseProxy 并且您想在 Dart 中复制 Json 结构,您可以使用:

import 'dart:convert';

String jsonValue = js.context.JSON.stringify(reponse);
Map dartJson = JSON.decode(jsonValue);

旁注:您必须使用 Map 作为 js.map(...) 的参数。在您的代码中,您使用String

关于dart - 如何在 dart 中使用 javascript 返回的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18840391/

相关文章:

dart - 从HTML引用静态const

dart - js-interop 测试 javascript 对象是否具有属性

dart - js-interop:如何使用js-interop将javascript `new`实现为 Dart ?

dart - 如何检查类型参数是否是 Dart 中的特定类型?

dart - Polymer linkPaths 不会在更改等时触发

dart - 如何在 flutter dart 中将 RevealedOffset 转换为数字

flutter - 我可以从 flutter 的SplashScreen上卸下装载轮吗

javascript - 从 Dart 代码调用匿名 Javascript 函数

callback - 参数不匹配的闭包调用:函数 'call'

javascript - JsFunction.apply 不起作用,而 JsObject.callMethod 起作用( Dart )