我正在尝试使用dart隔离库来提高我的应用程序性能.
看下面的代码:
import 'dart:isolate';
import 'package:dbcrypt/dbcrypt.dart';
main() {
var pwConPort = new ReceivePort();
pwConPort.listen((data) {
print(data);
pwConPort.close();
}, onError: (err) {
print(err);
});
Isolate.spawn(generatePasswordConcurrency, pwConPort.sendPort);
}
void generatePasswordConcurrency(SendPort sendPort) {
sendPort.send(_generateHashPassword('Passsowr1222!'));
}
String _generateHashPassword(String password) {
var regex = new RegExp(r'^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$');
if (!regex.hasMatch(password)) {
throw new StateError('Errors');
}
return new DBCrypt().hashpw(password, new DBCrypt().gensalt());
}
Run Code Online (Sandbox Code Playgroud)
一切正常但我只能传递一个静态密码,或者更好地说,我不知道,如何动态传递一些东西.在这里你可以看到,密码是硬编码的,但我想传递一个变量.
void generatePasswordConcurrency(SendPort sendPort) {
sendPort.send(_generateHashPassword('Passsowr1222!'));
}
Run Code Online (Sandbox Code Playgroud)
如果方法_generateHashPassword将抛出错误,我该如何处理此错误?我尝试从ReceivePort捕获listen方法的错误
pwConPort.listen((data) {
print(data);
pwConPort.close();
}, onError: (err) {
print(err);
});
Run Code Online (Sandbox Code Playgroud)
但仍然有未处理的异常消息.
Observatory listening on http://127.0.0.1:51433
in ShutdownIsolate: Unhandled …Run Code Online (Sandbox Code Playgroud)