angular dart js与客户端中等待的异步/承诺进行互操作
clientside.jsangular dart js与客户端中等待的异步/承诺进行互操作,dart,angular-dart,dart-js-interop,Dart,Angular Dart,Dart Js Interop,clientside.js async function callClientAsyncFuncWithResult () { let result = await someService.request(); return result; } 省道 import 'dart:js' as js; var result = js.context.callMethod('callClientAsyncFuncWithResult'); //I want to do som
async function callClientAsyncFuncWithResult () {
let result = await someService.request();
return result;
}
省道
import 'dart:js' as js;
var result = js.context.callMethod('callClientAsyncFuncWithResult');
//I want to do something like var result = await js.context.callMethod('callClientAsyncFuncWithResult');
在AngularDart中,在继续在dart中执行之前,如何等待客户端javascript承诺返回结果?现在它只是在调用上流动,我尝试将callMethod的结果设置为Future或Promise,它从不等待
我认为我的实现不正确。如何实现这一点?通过使用
convertNativePromiseToDartFuture
API,您可以轻松地将Javascript承诺转换为Dart未来,该API在Dart:html\u common
中提供
一个简单的实现可能如下所示:
Javascript:
function myCoolFunc () {
return new Promise((resolve, reject) => {
resolve(myLongAwaitedData);
});
}
Dart互操作文件:
@JS()
library coolLib;
import 'package:js/js.dart';
import 'dart:async';
@JS()
external Future<T> myCoolFunc ();
我在Dart Sdk的Gitter中发现了这一点。我希望它能帮助未来的角镖用户
更新:
convertnativepromisetotartfuture
已替换为promisetfuture
@SlimShady更新答案以反映新API
import 'dart:html_common';
import 'cool_lib.dart';
main() async {
var myVar = await convertNativePromiseToDartFuture(myCoolFunc());
print(myVar);
}