如何在dart中使用javascript返回的代理
我目前正在从dart调用一个JavaScript函数,该函数接受一个JSON字符串和一个成功回调 来自JavaScript的回调应该以JSON字符串的形式返回响应。但是,我无法从dart中返回的代理获取此信息。调试代理时,我只能看到_id、_port和hashCode 如何从代理获取所需的信息 代码片段:如何在dart中使用javascript返回的代理,dart,dart-js-interop,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
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?
}
当返回的类型不是
bool
、num
、String
或html.Element
时,使用js.Proxy
对象。当返回一个js.Proxy
时,您必须知道使用它的底层js对象的结构。例如,如果Js对象是一个对象,那么您可以像这样使用它:
js.Proxy p=//XMLHttpRequest上的代理
字符串结果=p.responseText;
//“.responseText”由noSuchMethod处理,调用在Js端完成
在您的情况下,如果response
是Proxy
,并且您希望在Dart中复制Json结构,则可以使用:
导入'dart:convert';
String jsonValue=js.context.JSON.stringify(response);
Map dartJson=JSON.decode(jsonValue);
旁注:您必须使用Map
作为js.Map(…)
的参数。在代码中使用字符串