0
私は要素にonClickハンドラを持っています。ハンドラは、データを検証し、非同期関数を介してローカルデータストアに保存します。簡体字コード:ページを離れるとき非同期
main() async {
Future validateAndSaveData(Event e) async {
Map inputData = {};
var inputs = querySelectorAll("input, select");
for (var input in inputs){
inputData[input.id] = input.value;
}
var error = currentPage.validate(inputData);
//e.preventDefault();
if (error.isEmpty){
try {
await currentPage.saveSurvey(inputData);
} catch (e){
print (e);
}
} else {
currentPage.handleErrors(error);
e.preventDefault();
}
print ("after validation/save");
}
querySelector("#next")
..onClick.listen(validateAndSaveData);
}
プリントがあるようなコードが実行された場合(「検証した後、保存/」)が実行されることはありませんと、データが保存されません。 e.preventDefault()のコメントを外すと、データが保存され、印刷が実行されます。
待機が完了する前にページが残っているようです。
currentPage.saveSurvey(inputData)行の待機を確実にするにはどうすればよいですか?
UbuntuのDartiumでDart 1.18.1を実行しています。この問題を持つ他の誰のために
私はできないと思います。 AFAIKこれはブラウザの制限であり、Dartには関係しません。ページが残っていれば、イベントキューは処理されず、 'saveSurvey()'が完了したときに 'await'の後のコードがエンキューされて実行されます。 –