Dart2JS Невозможно запустить асинхронный код при преобразовании из Dart в Javascript - PullRequest
3 голосов
/ 06 апреля 2019
main() async {
  print('Hello non-async world');
  await getNewThing().then((hello) => print(hello));
}

Future<String> getNewThing() async {
  return 'Hello World';
}

Это мой пример кода, index.dart.Он находится в моей веб-папке.

Я запускаю webdev build для компиляции в js.

Когда я запускаю dart web/index.dart в своей веб-папке, я получаю ожидаемый вывод

Hello non-async world
Hello World

Когда я запускаю node build/index.dart.js или index.js, я получаю только

Hello non-async world

Запускает ли он асинхронный код как другой процесс?

Полный вывод слишком длинный для отправки,

F={
a6:function(){var u=0,t=P.bF(null)
var $async$a6=P.bI(function(a,b){if(a===1)return P.bB(b,t)
while(true)switch(u){case 0:P.bO("Hello non-async world")
u=2
return P.cf(F.bi().K(new F.b_(),-1),$async$a6)
case 2:return P.bC(null,t)}})
return P.bD($async$a6,t)},
bi:function(){var u=0,t=P.bF(P.n),s
var $async$bi=P.bI(function(a,b){if(a===1)return P.bB(b,t)
while(true)switch(u){case 0:s="Hello World"
u=1
break
case 1:return P.bC(s,t)}})
return P.bD($async$bi,t)},
b_:function b_(){}}

Это вывод, который я нашел относительно моего кода дротика.

Шаги для воспроизведения touch testcompile.dart, добавить код, dart2js -O2 -o index.js testcompile.dart, наконец node index.js

...