如何结合JavaScript回调稳定1.1.1飞镖和在JavaScript(Dart2Js2Dart

2019-10-19 07:52发布

我想写一些达特功能“欧凯”,呼吁JavaScript函数“jsOnKey”(成功或异常也因为无法预测)。

接下来,我想是JavaScript函数“安其”将调用达特功能“callbackFromJs”,以控制再返回到达特(成功或异常)。

你能不能帮我这个全流程-请假设每个边境成功例外 -我不能依靠第三方代码- DART 2 JS 2 DART?


为了让更多的背景下,我把示例代码这个一般性问题。

import 'dart:html';

void onKey(Event event) {
  // I want to call something in javascript
  // function callbackFromDart () { 
  //  /* something */; 
  //  /* call callbackJs in Dart - return control to dart */
  // }
}

void callbackFromJs() {
  // It should be called from JavaScript
}

void main() {
  InputElement nameElement = querySelector('input[name=name]');
  nameElement..placeholder = 'Enter text'
      ..onKeyUp.listen(onKey);

  InputElement descriptionElement = querySelector('input[name=description]');
  descriptionElement..placeholder = 'Enter text'
    ..onKeyUp.listen(onKey);
}

Answer 1:

首先来看看从DART使用JavaScript 。

对于你的情况,你可以简单地通过回调来处理你所谓的js 2飞镖

import 'dart:js' as js;

void onKey(Event event) {
  onSuccess() {
    // Dart callback called from Js
  }
  onError() {
    // Dart callback called from Js
  }

  // assuming your js function takes 2 callbacks as parameters
  try {
    // in JS : function a() { throw "throw from js"; }
    js.context.callMethod('myTopLevelFunction', [onSuccess, onError]);
  } 
  catch (e) {
    print('js error catch on Dart side : $e');
  }
}

达特例外可以抓上侧的js同样的代码。



文章来源: How to bind JavaScript callback in stable 1.1.1 Dart and bind Dart callback in JavaScript (Dart2Js2Dart)?