我正在尝试在Dart webapp中使用Isolates,但我似乎无法使错误回调参数工作。 我有一个非常基本的代码,它在Dartium中运行。
import "dart:isolate";
void main() {
print("Main.");
spawnFunction(test, (IsolateUnhandledException e) {
print(e);
});
}
void test() {
throw "Ooops.";
}
我从未见过“主要”的东西。打印在控制台上。我做错了什么或者现在这样做了吗?
答案 0 :(得分:2)
错误回调将在新的隔离中执行。因此它不能是动态闭包,但需要是一个静态函数。
我还没有测试过,但这应该可行:
import "dart:isolate";
bool errorHandler(IsolateUnhandledException e) {
print(e);
return true;
}
void test() {
throw "Ooops.";
}
void main() {
// Make sure the program doesn't terminate immediately by keeping a
// ReceivePort open. It will never stop now, but at least you should
// see the error in the other isolate now.
var port = new ReceivePort();
print("Main.");
spawnFunction(test, errorHandler);
}
注意:在dart2js中,此功能仍未实现。旧版本只是忽略了这个论点。较新版本将抛出UnimplementedError。