我对Java语言还很陌生,我需要帮助使我的代码在继续执行下一个功能之前先等待函数完成。在我的代码中,我正在使用SES发送电子邮件,并且正在SNS中发布主题。
发送电子邮件并发布主题后,我需要将用户导航到“谢谢”页面。
关于我的代码设置方式,这非常不一致。有时它会发送电子邮件并在导航之前发布,有时它会先做一个,然后再导航。我需要帮助您了解如何使代码等待这两个功能完成,然后再导航到另一个页面。
谢谢大家!
我尝试使用if语句,但是没有按照我的想法工作。
sns.publish(snsParams, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
ses.sendEmail(sesParams, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
window.location = 'https://abc123.com/contact/thanks/';
答案 0 :(得分:0)
您可以通过将第二个呼叫用作第一个呼叫的回叫或使这些呼叫分散化来实现:
using (var connection = new NpgsqlConnection(_connectionString))
{
connection.Open();
var result = await connection.QueryAsync<dynamic>(
@"SELECT
(SELECT COUNT(Id) FROM public.Units WHERE UserId=@userId)
AS NumberOfUnits,
COUNT(*) AS MeasurementsRecieved
FROM public.Units
INNER JOIN public.Sensors
ON public.Units.Id = public.Sensors.UnitId
INNER JOIN public.Measurements ON public.Sensors.Id = public.Measurements.SensorId WHERE public.Units.UserId=@userId"
, new { userId }
);
connection.Close();
if (result == null)
throw new KeyNotFoundException();
return result;
}