问题描述
我有一个lambda函数,可使用nodemailer从联系表发送电子邮件。我遇到的问题是lambda函数拒绝让我将回调函数放到transporter.send邮件函数中,如本例所示。
#include <stdio.h>
#include <stdlib.h>
void merge_sort(int *arr,int strt,int end);
void merge(int *arr,int mid,int end);
void print_arr(int *arr,int arr_len);
int main(void) {
int arr[] = { 8,1,10,54,2,-3,5,70,60,11,4 };
int arr_len = sizeof(arr) / sizeof(arr[0]);
print_arr(arr,arr_len);
merge_sort(arr,arr_len);
print_arr(arr,arr_len);
}
void print_arr(int *arr,int arr_len) {
for (int i = 0; i < arr_len; i++) {
printf("%i ",arr[i]);
}
printf("\n");
}
void merge_sort(int *arr,int end) {
if (end - strt > 1) {
// avoid potential arithmetic overflow on start+end
int mid = strt + (end - strt) / 2;
merge_sort(arr,strt,mid);
merge_sort(arr,mid,end);
merge(arr,end);
}
}
void merge(int *arr,int end) {
int *tmp_arr = malloc(sizeof(*tmp_arr) * (end - strt));
//int tmp_arr[end - strt];
int i = strt;
int j = 0;
int k = mid;
while (i < mid && k < end) {
if (arr[i] <= arr[k]) {
tmp_arr[j++] = arr[i++];
} else {
tmp_arr[j++] = arr[k++];
}
}
while (i < mid) {
tmp_arr[j++] = arr[i++];
}
// copying the remaining elements from the right half is not needed as they
// are already in the proper place
//while (k < end) {
// tmp_arr[j++] = arr[k++];
//}
for (int m = 0; m < j; m++) {
arr[strt + m] = tmp_arr[m];
}
free(tmp_arr);
}
但是,当我尝试执行相同的操作时,即使在发送电子邮件之后,lambda函数仍会无限期运行。我希望像示例中一样,在send mail函数内部具有回调函数,以便可以将信息或错误消息发送回客户端。现在,我在transporter.sendmail函数之外具有回调函数,但是现在执行回调函数的速度比可以执行的transporter.sendmail函数要快。
transporter.sendMail({
from: process.env.MAIL_LOGIN,to: process.env.MAIL_TO,subject: process.env.SUBJECT + new Date().toLocaleString(),text: event.body
},function(error,info) {
if (error) {
callback(error);
} else {
callback(null,{
statusCode: 200,body: "Ok"
});
}
});
设置lambda时,我做错什么了吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)