【发布时间】:2018-09-10 21:21:28
【问题描述】:
我在 lambda 函数中使用 node.js 将数据保存到 mysql 数据库,然后发送推送通知。我希望在保存到数据库之后和发送推送通知之前进行回调以提高性能。但我希望推送代码在回调后继续执行。
这就是我所拥有的:
const AWS = require('aws-sdk');
var mysql = require('mysql');
var apn = require("apn");
exports.handler = (event, context, callback) => {
var connection = mysql.createConnection({
host: "databaseHost",
user: "databaseUser",
password: "databasePassword",
database: "databaseName",
});
var sql = "INSERT INTO some_table SET some_id = ?";
var inserts = [event.someId];
connection.query(sql, inserts, function (error, results, fields) {
connection.end();
if (error) {
callback(error);
} else {
var options = {
token: {
key: "key.p8",
keyId: "keyId",
teamId: "teamId"
},
production: true
};
var message = "Some Message";
var apnProvider = new apn.Provider(options);
var deviceTokens = event.deviceTokenArray;
var notification = new apn.Notification();
notification.alert = message;
notification.topic = "com.example.example";
apnProvider.send(notification, deviceTokens).then((response) => {
callback(null, event.arguments.input);
});
}
});
};
我希望apnProvider 函数中的回调在该函数之前发生,但该函数继续执行。理想情况下,我希望将推送消息放在单独的文件中,但我想这是一个不同的问题,我稍后会解决。
【问题讨论】:
标签: node.js asynchronous callback