angular dart js 与客户端中等待的异步/promise 互操作
angular dart js interop with async / promise awaited in client
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');
在 AngularDart 中,您如何等待客户端 javascript 向 return 承诺结果,然后再继续在 dart 中执行?现在它只是流过调用,我已经尝试将 callMethod 的结果设置为 Future 或 Promise,它从不等待。
我认为我的实现不正确。我怎样才能做到这一点?
您可以使用 convertNativePromiseToDartFuture
API 轻松地将 Javascript Promise 转换为 Dart Future,它在 dart:html_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 ();
飞镖文件:
import 'dart:html_common';
import 'cool_lib.dart';
main() async {
var myVar = await convertNativePromiseToDartFuture(myCoolFunc());
print(myVar);
}
我在 Dart Sdk 的 Gitter 中发现了这个。我希望它可以帮助未来的 Angular Dart 用户。
更新:This API has changed in Dart 2.6 convertNativePromiseToDartFuture
已替换为 promiseToFuture
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');
在 AngularDart 中,您如何等待客户端 javascript 向 return 承诺结果,然后再继续在 dart 中执行?现在它只是流过调用,我已经尝试将 callMethod 的结果设置为 Future 或 Promise,它从不等待。
我认为我的实现不正确。我怎样才能做到这一点?
您可以使用 convertNativePromiseToDartFuture
API 轻松地将 Javascript Promise 转换为 Dart Future,它在 dart:html_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 ();
飞镖文件:
import 'dart:html_common';
import 'cool_lib.dart';
main() async {
var myVar = await convertNativePromiseToDartFuture(myCoolFunc());
print(myVar);
}
我在 Dart Sdk 的 Gitter 中发现了这个。我希望它可以帮助未来的 Angular Dart 用户。
更新:This API has changed in Dart 2.6 convertNativePromiseToDartFuture
已替换为 promiseToFuture