angular dart js与客户端中等待的异步/承诺进行互操作

angular 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

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 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);
}