ユーザーがパスワードのリセットを要求したときにテキストメッセージを送信しようとしています。成功したかどうかを知らせるメッセージが送信されるのを待っています。私は現在、次のようにそれを行うにしようとしています:私の他のクラスAWSSNSClientでAWS SNSパブリッシュコールバックが呼び出しメソッドに値を返すのを待ちます。
async function sendResetPasswordTextMessage(req, res) {
let result = {};
let phoneNumber = req.body.phoneNumber;
if (phoneNumber === undefined) {
return sendInvalidParametersMessage(res);
}
phoneNumber = phoneNumber.toString();
const userProfile = await models.UserProfile.findOne({
where: {
phoneNumber: phoneNumber
}
});
************************** RELEVANT CODE TO ISSUE *************************
if (userProfile) {
const message = "Your username is:\n" + userProfile.username;
const sent = await AWSSNSClient.sendMessage(message, phoneNumber);
if (!sent) {
result.error = setTitleAndMessage("Error", "An error occurred");
} else {
result.success = setTitleAndMessage("Success", "Message sent");
}
}
return res.send(result);
***************************************************************************
}
、私は以下のsendMessage関数があります。
function sendMessage(message, phoneNumber) {
const params = {
Message: message,
MessageStructure: "string",
PhoneNumber: "+1" + phoneNumber
};
let sent = false;
sns.publish(params, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
}
else {
sent = true;
}
});
return sent;
}
を私はsns.publishのためのsendMessage待機を作成する方法を見つけ出すことはできません自分自身を返す前に戻る。私はそれを非同期メソッドにして、sns.publishにawaitを追加しようとしましたが、send関数がtrueになる前に関数はまだ戻ります。
私はメッセージを受信していて、コンソールログは印刷されていないので、エラーなしでメッセージが送信されていることを知っています。
よう
callback
を供給することができ、こののようなあなたのsendMessgeを修正し、あなたはどれを呼び出すことができますすることができますのsendMessageにコールバック関数を提供しなければならないのいずれか成功した場合やエラーが発生した場合にそれを解決する/拒否する約束を返します。 –