在客户端等待async / promise的角度dart js互操作

问题描述 投票:1回答:1

clientside.js

async function callClientAsyncFuncWithResult () {

    let result = await someService.request();
    return result;
}

page.dart

import 'dart:js' as js;

var result = js.context.callMethod('callClientAsyncFuncWithResult'); 

//I want to do something like var result = await js.context.callMethod('callClientAsyncFuncWithResult'); 

[在dart中继续执行之前,您如何在AngularDart中等待客户端javascript Promise返回结果?现在,它只是在调用中流动,我尝试将callMethod的结果设置为Future或Promise,并且它永远不会等待。

我认为我的实现不正确。我该如何实现?

dart angular-dart dart-js-interop
1个回答
0
投票

您可以使用convertNativePromiseToDartFuture中提供的dart:html_common API轻松地将Javascript Promise转换为Dart Future。

一个简单的实现可能看起来像:

Javascript:

function myCoolFunc () {
  return new Promise((resolve, reject) => {
    resolve(myLongAwaitedData);
  });
}

Dart Interop文件:

@JS()
library coolLib;

import 'package:js/js.dart';
import 'dart:async';

@JS()
external Future<T> myCoolFunc ();

Dart文件:

import 'dart:html_common';
import 'cool_lib.dart';

main() async {
  var myVar = await convertNativePromiseToDartFuture(myCoolFunc());
  print(myVar);
}

我发现它深深地埋在Dart Sdk的Gitter中。我希望它可以为将来的Angular Dart用户提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.