我的网站非常混乱,我的JavaScript函数是这样的:
async function doSomething(value) {
let x = await something(x);
return x
}
当我现在飞镖时,我有:
final result = await js.context.callMethod('doSomething', ['someValue']));
当我打印它时,它返回[object Promise]
,但它会忽略await
,没有.then
函数,因此也不能与promiseToFuture
一起使用。
如何等待执行JavaScript?
答案 0 :(得分:1)
也许使用Future构建器来等待JS执行?
Future getSomething(String someValue) async {
var result = await js.context.callMethod('doSomething', [someValue]));
return result;
}
FutureBuilder(
future: getSomething(someValue),
builder: (context, snapshot) {
if (snapshot.hasData) {
var data = snapshot.data;
print(data);
} else {
return Loading();
}
});
答案 1 :(得分:0)
await
对js.context.callMethod
不起作用。
必须将其添加到代码中的某个位置,例如javascript_controller.dart
@JS()
library script.js;
import 'package:js/js.dart';
import 'dart:js_util';
@JS()
external dynamic doSomething();
然后
Future getSomething(String someValue) async {
var result = await promiseToFuture(doSomething());
return result;
}
答案 2 :(得分:0)
-我尝试了使用async从js文件异步执行相同的方法,并在dart文件中使用了--promisetofuture,但是我等不及我们从js文件中获得有关Flutter Web的响应
enter code here
-async函数getPhoneNumber(){ -let res =等待someFunction等待someTime;
-在此处输入代码 function somfunc() async{ -var number = await promiseToFuture(js.context.callMethod('getPhoneNumber')); -}