У меня есть асинхронная функция, которая должна возвращать true
или false
, но она выполнялась несколько раз в соответствии с журналами, а не один раз и заканчиваться, но возвращая сообщение об ошибке i/o failure
вместо ожидаемого значения.
Parse.Cloud.define("updateMatch", async (request) => {
const query = new Parse.Query("Match");
query.equalTo("league", request.params.league);
const results = await query.find();
var match = null;
if (results.length > 0) {
match = results[0];
}else{
var Match = Parse.Object.extend("Match");
match = new Match();
match.set("groupId", request.params.Id);
}
match.set("stadium",request.params.stadium);
var saved = await match.save(null, { useMasterKey: true });
return true;
});
Когда я изменяю асинхронную функцию на нормальную функцию, она выполняется один раз и возвращает ожидаемое значение, равное true
Parse.Cloud.define("updateMatch", function(request,response){
const query = new Parse.Query("Match");
query.equalTo("league", request.params.league);
query.find().then((results)=>{
var match = null;
if (results.length > 0) {
match = results[0];
}else{
var Match = Parse.Object.extend("Match");
match = new Match();
match.set("groupId", request.params.Id);
}
match.set("stadium",request.params.stadium);
match.save(null, { useMasterKey: true });
return response.success(true);
});
});
Это способ, которым я вызываю функцию с Android
val params = HashMap<String, Any>()
params["league"] = "EPA"
params["groupId"] = "A"
params["stadium"] = "Etihad"
ParseCloud.callFunctionInBackground("updateMatch", params,FunctionCallback { success, e ->
AppLogger.error("success? ${success} error is ${e?.message}")
}
В чем может быть проблема с асинхронной функцией?