我有這個從資料庫中獲取資料的功能。
Future reg() async {
try {
getData().then((value) async {
Dio dio = Dio();
Response response = await dio.get(
'http://${value["serverIP"]}:${value["port"]}/${value["passwordMain"]}/reg/${controllerEmail.text}/${controllerPassword.text}/${controllerUsername.text}');
return response;
});
} catch (e) {}
}
現在我請求資料并檢查一些條件,但是,在從資料庫中獲取資料之前首先運行 if 條件,并且資料在完全執行代碼之后到達(我知道這是因為它可以在檢查 IF 后列印正確的資料條件)。
else {
var response = await reg();
if (response != null) {
if (response.data == "done") {
showErrorDialog(context, "Done",
"Your Account has been Created, please Log in");
} else if (response.data == "key") {
showErrorDialog(
context,
"Incorrect API Key/Main Server Password",
"The API Key (Main Server Password) is Incorrect. Kindly, Ensure the Key.");
} else if (response.data == "email") {
showErrorDialog(context, "Account Already Exists",
"An Account already exists with this Email");
} else if (response.data == "username") {
showErrorDialog(context, "Account Already Exists",
"An Account already exists with this Username");
}
}
}
從資料庫中獲取資料后如何運行這些 IF 條件?
uj5u.com熱心網友回復:
您return的reg()功能中缺少 a 。getData()在您的通話之前添加一個,如下所示:
Future reg() async {
try {
return getData().then((value) async {
Dio dio = Dio();
Response response = await dio.get(
'http://${value["serverIP"]}:${value["port"]}/${value["passwordMain"]}/reg/${controllerEmail.text}/${controllerPassword.text}/${controllerUsername.text}');
return response;
});
} catch (e) {}
}
現在應該正確等待該函式,因為它現在回傳一個 Promise 而不是什么都沒有。
或者,您可能更喜歡使用更多 async/await 重寫它以便于理解,如下所示:
Future reg() async {
try {
const value = await getData();
Dio dio = Dio();
Response response = await dio.get(
'http://${value["serverIP"]}:${value["port"]}/${value["passwordMain"]}/reg/${controllerEmail.text}/${controllerPassword.text}/${controllerUsername.text}');
return response;
} catch (e) {}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/523018.html
